RecyclerView的使用需要准备
- 布局管理器
- 数据源
- Adapter 继承自RecyclerView.Adapter T为holder
- holder 继承自RecyclerView.ViewHolder
RecyclerView的简单使用
- 在布局文件中添加 RecyclerView
<android.support.v7.widget.RecyclerView android:id="@+id/my_recycler_view" android:layout_width="match_parent" android:layout_height="match_parent" android:scrollbars="vertical"/>
- 编写适配器
public class ListAdapter extends RecyclerView.Adapter<TestMyHolder> { private Context mContext; private ArrayList<DataBean> mDatas; public ListAdapter(Context context, ArrayList<DataBean> datas) { mContext = context; mDatas = datas; } @Override public TestMyHolder onCreateViewHolder(ViewGroup parent, int viewType) {//创建viewHolder View view = View.inflate(mContext, R.layout.test, null); return new TestMyHolder(view); } @Override public void onBindViewHolder(TestMyHolder holder, int position) { holder.setDataAndRefreshUI(mDatas.get(position)); } @Override public int getItemCount() {//条目的总数 return mDatas.size(); } }编写holder
public class TestMyHolder extends RecyclerView.ViewHolder { private final TextView mTv; private View view; public TestMyHolder(View itemView) { super(itemView); view = itemView; mTv = (TextView) view.findViewById(R.id.tv); } public void setDataAndRefreshUI(DataBean data) { mTv.setText(data.mTextView); } }实体类
public class DataBean { public String mTextView; public DataBean(String textView) { mTextView = textView; } }
- 条目设置
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <TextView android:id="@+id/tv" android:layout_width="wrap_content" android:layout_height="wrap_content" android:gravity="center"/> </LinearLayout>
- MainActivity
public class MainActivity extends Activity { private RecyclerView my_recycler_view; private ArrayList<DataBean> mDatas; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); my_recycler_view = (RecyclerView) findViewById(R.id.my_recycler_view); initData(); //定义布局管理器 GridLayoutManager glm = new GridLayoutManager(this, 3, LinearLayoutManager.VERTICAL, false); // LinearLayoutManager llm = new LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false); //设置布局管理器 my_recycler_view.setLayoutManager(glm); //设置适配器 my_recycler_view.setAdapter(new ListAdapter(this, mDatas)); } /** * 初始化数据 */ private void initData() { mDatas = new ArrayList<DataBean>(); DataBean data = null; for (int i = 0; i < 200; i++) { data = new DataBean("test" + i); mDatas.add(data); } } }运行结果