RecyclerView主要需要实现几个方法:setAdapter(); setLayoutManager();(设置子项的显示布局) addItemDecoration();(设置子项之间的分割线)
最重要的当然是适配器,自定义继承RecyclerView的适配器,实现其中的方法。在继承父类时传入的泛型ViewHolder也应该自定义。主要的思路是:在viewholder的构造器中实现子项布局的初始化,在adapter的onCreateViewHolder中创建view传入新建的viewholder并返回该viewholder,在onBindViewHolder中实现对子项布局的内容设置。详见代码:
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import java.util.List;
/**
* Created by lenovo on 2016/9/20.
*/
public class MyAdapter extends RecyclerView.Adapter<MyViewHolder>{
private LayoutInflater inflater;
private List<String> datas ;
private Context mContext;
public MyAdapter(List<String> datas,Context mContext) {
this.datas = datas;
this.mContext = mContext;
inflater = LayoutInflater.from(mContext);
}
@Override
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = inflater.inflate(R.layout.item_layout,parent,false);
MyViewHolder viewHolder = new MyViewHolder(view);
return viewHolder;
}
//对子项布局内容进行设置
@Override
public void onBindViewHolder(MyViewHolder holder, int position) {
holder.getTv().setText(datas.get(position));
}
@Override
public int getItemCount() {
return datas.size();
}
}
class MyViewHolder extends RecyclerView.ViewHolder{
public TextView getTv() {
return tv;
}
private TextView tv;
//进行子项中布局的初始化
public MyViewHolder(View itemView) {
super(itemView);
tv = (TextView) itemView.findViewById(R.id.tvItem);
}
}需要注意的事我在自己定义的构造方法中选择传入context是为了获取layoutinflator,然后用来创建子view;
本文介绍了如何使用RecyclerView并自定义适配器。通过继承RecyclerView.Adapter类并实现其方法,可以为子项创建和绑定视图。代码示例展示了如何初始化布局、创建ViewHolder以及设置子项内容。
2407

被折叠的 条评论
为什么被折叠?



