RecycleView的使用细则

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;
}

@Override
public 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;
}

@Override
public 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;
}
});
}
}

@Override
public 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、设置事件的监听

猜你喜欢

转载自blog.csdn.net/qq_28889087/article/details/53822105
今日推荐