@Override
public?RecyclerViewHolder?onCreateViewHolder(ViewGroup?parent,?int?viewType)?{
创建一个新视图,该视图定义item的UI
final?RecyclerViewHolder?holder?=?new?RecyclerViewHolder(mContext,
mInflater.inflate(getItemLayoutId(viewType),?parent,?false));
if?(mClickListener?!=?null)?{
holder.itemView.setOnClickListener(new?View.OnClickListener()?{
@Override
public?void?onClick(View?v)?{
mClickListener.onItemClick(holder.itemView,?holder.getLayoutPosition());
}
});
}
if?(mLongClickListener?!=?null)?{
holder.itemView.setOnLongClickListener(new?View.OnLongClickListener()?{
@Override
public?boolean?onLongClick(View?v)?{
mLongClickListener.onItemLongClick(holder.itemView,?holder.getLayoutPosition());
return?true;
}
});
}
return?holder;
}
@Override
public?void?onBindViewHolder(RecyclerViewHolder?holder,?int?position)?{
convert(holder,?position,?mData.get(position));
}
@Override
public?int?getItemCount()?{
return?mData.size();
}
public?void?add(int?pos,?T?item)?{
mData.add(pos,?item);
notifyItemInserted(pos);
}
public?void?delete(int?pos)?{
mData.remove(pos);
notifyItemRemoved(pos);
}
public?void?setOnItemClickListener(OnItemClickListener?listener)?{
mClickListener?=?listener;
}
public?void?setOnItemLongClickListener(OnItemLongClickListener?listener)?{
mLongClickListener?=?listener;
}
abstract?public?int?getItemLayoutId(int?viewType);
abstract?public?void?convert(RecyclerViewHolder?holder,?int?position,?T?bean);
public?interface?OnItemClickListener?{
public?void?onItemClick(View?itemView,?int?pos);
}
public?interface?OnItemLongClickListener?{
public?void?onItemLongClick(View?itemView,?int?pos);
}
}
RecyclerViewHolder
public?class?RecyclerViewHolder?extends?RecyclerView.ViewHolder?{
private?SparseArray<View>?mViews;//集合类,layout里包含的View,以view的id作为key,value是view对象
private?Context?mContext;//上下文对象
public?RecyclerViewHolder(Context?ctx,?View?itemView)?{
super(itemView);
mContext?=?ctx;
mViews?=?new?SparseArray<View>();
}
private?<T?extends?View>?T?findViewById(int?viewId)?{
View?view?=?mViews.get(viewId);
if?(view?==?null)?{
view?=?itemView.findViewById(viewId);
mViews.put(viewId,?view);
}
return?(T)?view;
}
public?View?getView(int?viewId)?{
return?findViewById(viewId);
}
public?TextView?getTextView(int?viewId)?{
return?(TextView)?getView(viewId);
}
public?Button?getButton(int?viewId)?{
return?(Button)?getView(viewId);
}
public?ImageView?getImageView(int?viewId)?{
return?(ImageView)?getView(viewId);
}
public?ImageButton?getImageButton(int?viewId)?{
return?(ImageButton)?getView(viewId);
}
public?EditText?getEditText(int?viewId)?{
return?(EditText)?getView(viewId);
}
public?RecyclerViewHolder?setText(int?viewId,?String?value)?{
TextView?view?=?findViewById(viewId);
view.setText(MStringUtils.isNullOrEmpty(value)???""?:?value);
return?this;
}
public?RecyclerViewHolder?setVisible(int?viewId,?int?visible)?{
View?view?=?findViewById(viewId);
view.setVisibility(visible);
return?this;
}
public?RecyclerViewHolder?setBackground(int?viewId,?int?resId)?{
View?view?=?findViewById(viewId);
view.setBackgroundResource(resId);
return?this;
}
public?RecyclerViewHolder?setImageResource(int?viewId,?int?resId)?{
ImageView?view?=?findViewById(viewId);
view.setImageResource(resId);
return?this;
}
public?RecyclerViewHolder?setClickListener(int?viewId,?View.OnClickListener?listener)?{
View?view?=?findViewById(viewId);
view.setOnClickListener(listener);
return?this;
}
}
以上就是部分代码,其他的不重要的就没贴,希望对你有所帮助。你可以根据自己的情况修改上面的代码,要知道适合自己的才是最好的。
相关推荐
[RecycleView 不显示、显示不全及滑动卡顿]( )
最后
目前已经更新的部分资料: