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