recyclerview代替listview和grideview
1.RecyclerView 是Google推出的最新的 替代ListView、GridView的组件,RecyclerView是用来显示大量数据的容器,并通过有限数量的子View,来提高滚动时的性能。
2.优点:RecyclerView 不再负责布局,而是专注于布局复用。
自己在用的过程中,感觉适配器清晰明了,一个填充布局,填充完布局然后到viewholder找到控件,onBindViewHolder里就是给控件设置内容。
3.3种:
LinearLayoutManager 线性布局管理器 (ListView效果)
GridLayoutManager 网格布局管理器 (GridView效果)
StaggeredGridLayoutManager 瀑布流管理器
4.布局:使用v7包下
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical" />
5.适配器:自己使用的自布局是系统的一个简单布局R.layout.simple_list_item_1,就一个textview,简单用数组来实现。
public class ReAdapter extends RecyclerView.Adapter<ReAdapter.ViewHolder> {
// 数据集
private String[] mDataset;
public ReAdapter(String[] dataset) {
super();
mDataset = dataset;
}
@Override
public int getItemCount() {
return mDataset.length;
}
@Override
public void onBindViewHolder(ViewHolder arg0, int arg1) {
// 绑定数据到ViewHolder上
arg0.mTextView.setText(mDataset[arg1]);
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup arg0, int arg1) {
// 创建一个View,简单起见直接使用系统提供的布局,就是一个TextView
View view = View.inflate(arg0.getContext(),
android.R.layout.simple_list_item_1, null);
// 创建一个ViewHolder
ViewHolder holder = new ViewHolder(view);
return holder;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public TextView mTextView;
public ViewHolder(View itemView) {
super(itemView);
mTextView = (TextView) itemView;
}
}
}
6.activity中,第一个是实现gridview,listview的话只需要将GridLayoutManager layoutManager = new GridLayoutManager(this,3);改成 LinearLayoutManager layoutManager = new LinearLayoutManager(this);就可以实现了。当然这种情况只是自布局都是一个textview,要加载别的还需要修改布局,适配器。
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = (RecyclerView) findViewById(R.id.recyclerView);
GridLayoutManager layoutManager = new GridLayoutManager(this,3);
recyclerView.setLayoutManager(layoutManager);
// 创建数据集
String[] dataset = new String[100];
for (int i = 0; i < dataset.length; i++){
dataset[i] = "item" + i;
}
// 创建Adapter,并指定数据集
ReAdapter adapter = new ReAdapter(dataset);
// 设置Adapter
recyclerView.setAdapter(adapter);
}
7.这样来 是不是感觉比原来的简单好多,而且可以重复利用资源。