最近,笔者花了很多时间学习了一些Google官方推荐的RecycleView的用法,发现相比于原来的ListView,RecycleView的功能实在是太强大,很值得大家去学习一下。
基本的使用
我们就不讲如何导入包什么的了吧,我们直接进入主题。
xml
<android.support.v7.widget.RecyclerView
android:id="@+id/recycleview"
android:layout_width="match_parent"
android:layout_height="wrap_content">
</android.support.v7.widget.RecyclerView>
我们在activity_main中添加以上这些代码,这里几乎与我们经常写的ListView 没有什么区别。
adapter
public class MyAdapter extends RecyclerView.Adapter<MyAdapter.ViewHolder>{
private List<String> dataLists = new ArrayList<>();
public MyAdapter(List<String> data){
dataLists =data;
}
@Override
public MyAdapter.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = View.inflate(parent.getContext(),R.layout.item_normal, null); ViewHolder holder = new ViewHolder(view);
return holder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
holder.mTextView.setText(dataLists.get(position));
}
@Override
public int getItemCount() {
return dataLists == null ? 0 : dataLists.size();
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView = (TextView)
itemView.findViewById(R.id.item_normal_tv);
}
}
}
上面可以看出,Adapter里面规定我们必须使用ViewHolder来加载我们的Item界面。
- onCreateViewHolder
- onBindViewHolder
这两个方法可以理解为是将原本ListView的getView()方法解体了,可以看见,我们在onCreateViewHolder里面绘制我们的View,然后再onBindViewHolder里面处理我们的数据,是不是感觉代码比我们的ListView少多了呢,哈哈。
Activity
private RecyclerView recyclerView;
private List<String> stringList= new ArrayList()<>;
---------------------------------------------------------
//随便添加一点数据....
recyclerView = (RecyclerView) findViewById(R.id.recycleview);
recyclerView.setLayoutManager(new LinearLayoutManager(this));
// mRecyclerView.setLayoutManager(new GridLayoutManager(this, 2));//这里用线性宫格显示 类似于grid view
// mRecyclerView.setLayoutManager(new StaggeredGridLayoutManager(2, OrientationHelper.VERTICAL));
recyclerView.setAdapter(new MyAdapter(stringList));
简单的几步,我们的RecycleView就已经实现完了,还有两种的格式,大家可以自己去试一下,可以很方便的实现了GridView的效果。
我们展示到我们的虚拟机上
是不是就已经出现了呢,相比ListView,RecycleView的处理更加简单,并且更灵活好用,它将数据、排列方式、数据的展示方式都分割开来,因此可扩展度很高~