RecycleView的使用细则

来源:互联网 发布:猪八戒局域网考试软件 编辑:程序博客网 时间:2024/05/29 15:36

RecycleView的使用细则

重点解析
准备工作–导包
在Android studio中的gradle里 compile ‘com.android.support:recyclerview-v7:25.0.0’,也可导入其jar包;
对RecyclerView的认识
两个关键词:回收,复用;
recycleView的使用
1、实例化recycleView,如:recyclerView = (RecyclerView) findViewById(R.id.recycle_view);
2、设置布局管理器(LayoutManager),待选LayoutManager: LinearLayoutManager、GridLayoutManager、StaggeredGridLayoutManager;
它们的构造方法分别为:new LinearLayoutManager(context),new GridLayoutManager(context,int),new StaggeredGridLayoutManager(int, StaggeredGridLayoutManager.VERTICAL)(也可以为水平的);
设置方法:recyclerView.setLayoutManager(LayoutManager)
3、设置适配器RecycleAdapter
创建RecycleAdapter,例如下面的实例:
`public class RecycleAdapter extends RecyclerView.Adapter {
private Context context;
private List mData;

public RecycleAdapter(Context context, List<String> mData) {    this.context = context;    this.mData = mData;}@Overridepublic RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {    View view = LayoutInflater.from(context).inflate(R.layout.item_view, parent, false);    MyViewHolder myViewHolder = new MyViewHolder(view);    return myViewHolder;}@Overridepublic void onBindViewHolder(final RecyclerView.ViewHolder holder, int position) {    final MyViewHolder myViewHolder = (MyViewHolder) holder;    myViewHolder.tv_item.setText(mData.get(position));    int height = (int) (Math.random() * 200 + 200);    Log.i("height", height + "");

// StaggeredGridLayoutManager.LayoutParams lp = (StaggeredGridLayoutManager.LayoutParams) myViewHolder.tv_item.getLayoutParams();
// lp.height = height;
// myViewHolder.tv_item.setLayoutParams(lp);
// Log.i(“textViewHeight”, String.valueOf(myViewHolder.tv_item.getHeight()));
if (onItemClickListener != null) {
myViewHolder.tv_item.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int pos = holder.getLayoutPosition();
onItemClickListener.onItemClick(((MyViewHolder) holder).tv_item, pos);
}
});
myViewHolder.tv_item.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
int pos = holder.getLayoutPosition();
onItemClickListener.onItemLongClick(((MyViewHolder) holder).tv_item, pos);
return false;
}
});
}
}

@Overridepublic int getItemCount() {    return mData.size();}public class MyViewHolder extends RecyclerView.ViewHolder {    TextView tv_item;    public MyViewHolder(View itemView) {        super(itemView);        tv_item = (TextView) itemView.findViewById(R.id.tv_item);    }}public void addData(int position) {    mData.add(position, "Insert One");    notifyItemInserted(position);}public void removeData(int position) {    mData.remove(position);    notifyItemRemoved(position);}public interface OnItemClickListener {    void onItemClick(View view, int position);    void onItemLongClick(View view, int position);}private OnItemClickListener onItemClickListener;public void setOnItemClickListener(OnItemClickListener onItemClickListener) {    this.onItemClickListener = onItemClickListener;}

}
`
设置方法:recyclerView.setAdapter(recycleAdapter);
4、添加分割线,recyclerView.addItemDecoration(new MyDividerGridItemDecoration(this));
public class MyDividerGridItemDecoration extends RecyclerView.ItemDecoration {…};
5、设置事件的监听

0 0
原创粉丝点击