冰冻三尺非一日之寒,所有的创新都是在大量的知识积累的基础上出来的,所以只有不断的积累知识,才能有更好的创新。第一次写,写的不好大家多多包涵。我也是站在巨人的肩膀上的
一、adapter的修改该
public abstract class GlobleAdapter<T> extends RecyclerView.Adapter<ViewHolder> {
private Context mContext;
private LayoutInflater mInflater;
List<T> mDatas;
private int mLayoutId;
public GlobleAdapter(Context context, List<T> datas, int layoutId) {
this.mContext = context;
if (datas != null && datas.size() > 0) {
this.mDatas = datas;
} else {
mDatas = new ArrayList<>();
}
mInflater = LayoutInflater.from(context);
this.mLayoutId = layoutId;
}
@Override
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View itemView = mInflater.inflate(mLayoutId, parent, false);
ViewHolder viewHolder = new ViewHolder(itemView);
return viewHolder;
}
@Override
public void onBindViewHolder(ViewHolder holder, int position) {
}
@Override
public int getItemCount() {
if (mDatas != null && mDatas.size() > 0) {
return mDatas.size();
}
return 0;
}
//添加数据
public void addDatas(List<T> datas) {
if (datas != null && datas.size() > 0) {
mDatas.addAll(datas);
}
notifyDataSetChanged();
}
//清楚所有数据
public void clear() {
mDatas.clear();
notifyDataSetChanged();
}
//获取数据集合
public List<T> getDatas() {
return mDatas;
}
}
二、ViewHolder的修改该
public class ViewHolder extends RecyclerView.ViewHolder {
private SparseArray<View> mViews;
public ViewHolder(View itemView) {
super(itemView);
mViews = new SparseArray<>();
}
/**
* 通过id获取view
*
* @param viewId
*/
public <T extends View> T getView(int viewId) {
View view = mViews.get(viewId);
if (view == null) {
view = itemView.findViewById(viewId);
mViews.put(viewId, view);
}
return (T) view;
}
/**
* 设置当前控件是否显示
*
* @param viewId
* @param visible
* @return
*/
public ViewHolder setViewVisible(int viewId, int visible) {
getView(viewId).setVisibility(visible);
return this;
}
/**
* 设置textview的内容
*
* @param viewId
* @param text
* @return
*/
public ViewHolder setText(int viewId, CharSequence text) {
TextView textView = getView(viewId);
textView.setText(text);
return this;
}
/**
* 给imageView设置本地图片
*
* @param viewId
* @param resource
* @return
*/
public ViewHolder setImgResource(int viewId, int resource) {
ImageView imageView = getView(viewId);
imageView.setImageResource(resource);
return this;
}
/**
* 设置条目的监听
*
* @param listener
* @return
*/
public ViewHolder setItemClickListener(View.OnClickListener listener) {
itemView.setOnClickListener(listener);
return this;
}
}
三、应用
activity
LinearLayoutManager manager = new LinearLayoutManager(this);
recyclerview.setLayoutManager(manager);
adapter = new RecyclerViewAdapter(this, null, R.layout.item_home, this);
recyclerview.setAdapter(adapter);
adapter.addDatas(mDatas);
adapter
public class RecyclerViewAdapter extends CurrencyAdapter<String> {
private Context mContext;
private ItemListener mItemListener;
public RecyclerViewAdapter(Context context, List<String> datas, int layoutId, ItemListener itemListener) {
super(context, datas, layoutId, itemListener);
this.mContext = context;
this.mItemListener = itemListener;
}
@Override
protected void convert(ViewHolder holder, final int position) {
holder.setText(R.id.id_num, getDatas().get(position)).setItemClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
mItemListener.itemListener(position);
}
});
}
}
网友评论