0
点赞
收藏
分享

微信扫一扫

Android RecyclerView的简单使用,阿里Android研发岗二面

sin信仰 2022-03-20 阅读 101

@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)?{

Android RecyclerView的简单使用,阿里Android研发岗二面

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 不显示、显示不全及滑动卡顿]( )

最后

目前已经更新的部分资料:

Android RecyclerView的简单使用,阿里Android研发岗二面
Android RecyclerView的简单使用,阿里Android研发岗二面
Android RecyclerView的简单使用,阿里Android研发岗二面

举报

相关推荐

0 条评论