Adapter 一些建议
funcheng opened this issue · 0 comments
funcheng commented
你好,看了你的代码,觉得很不错。在使用这个库的时候有几个想法:
关于LoadMoreAdapter
-
关于设置:hasLoadMore 这个方法是private。为什么不能设置 getter setter?很多时候加载更多的时候,如果没有更多的时候,能简单的设置hasLoadMore 不是更好吗?
-
错误处理,如果我在加载loadMore的时候,如果出现错误,如何显示一个错误的item?点击重新刷新?
关于 MultiItemTypeAdapter 数据安全 :
- 你的adapter 的 构造函数里面要求传入 List, 你将传入的赋予mData。 其实我觉得最好是你自己内部建立一个空的List, 避免null指针
public class MultiItemTypeAdapter<T> extends RecyclerView.Adapter<ViewHolder> {
protected Context mContext;
protected List<T> mDatas = new ArrayList<>();
protected ItemViewDelegateManager mItemViewDelegateManager = new ItemViewDelegateManager();
protected OnItemClickListener mOnItemClickListener;
public MultiItemTypeAdapter(Context context) {
mContext = context;
}
public void addData(List<T> datas) {
mDatas.addAll(datas);
}
public void setData(List<T> datas) {
mDatas.clear();
mDatas.addAll(datas);
}
关于 ItemViewDelegate
RecycleViewAdapter 有两个基本方法:
onCreateViewHolder
onBindViewHolder
个人觉得可以把 ItemViewDelegate#convert(ViewHolder holder, T t, int position); 分为两个方法 :
void create(View view); 这个方法用来初始化ViewHolder里面的Views (现在很多人喜欢用 butterKnife)这个方法在 onCreateViewHolder 调用
void convert(T t, int position); 这个方法在 onBindViewHolder 调用
因为在create()里面已经初始化了所有views 所以就不需要 ViewHolder holder 来调用 譬如
holder.setText() 这样的方法