在慕课上看到大神的ListView万能适配 自己试着做了下 由于本人是一个菜鸟所以只能完成省略ViewHolder
创建一个ViewHolder工具类 继承BaseAdapter
详细代码如下
public class ViewHolder {
private SparseArray<View> mViews;
private int mPosition;
private View mConvertview;
public ViewHolder(Context context, ViewGroup parent, int layoutId,
int position) {
this.mPosition = position;
this.mViews = new SparseArray<View>();
mConvertview = LayoutInflater.from(context).inflate(layoutId, null);
mConvertview.setTag(this);
}
public static ViewHolder get(Context context, View converView,
ViewGroup parent, int layoutId, int position) {
if (converView == null) {
return new ViewHolder(context, parent, layoutId, position);
} else {
ViewHolder holder = (ViewHolder) converView.getTag();
holder.mPosition=position;
return holder;
}
}
/**
* 通过Viewid获取 控件
*
* @param viewId
* @return
*/
public <T extends View> T getView(int viewId) {
View view = mViews.get(viewId);
if (view == null) {
view = mConvertview.findViewById(viewId);
mViews.put(viewId, view);
}
return (T) view;
}
public View getConvertView() {
return mConvertview;
}
}
再创建一个适配器 继承BaseAdapter
代码如下
public class AllAdapters extends BaseAdapter {
private List<Bean> bean;
private Context mContext;
public AllAdapters(Context mContext) {
super();
this.mContext = mContext;
}
public void setBean(List<Bean> bean) {
this.bean = bean;
}
@Override
public int getCount() {
return bean != null ? bean.size() : 0;
}
@Override
public Object getItem(int arg0) {
return null;
}
@Override
public long getItemId(int arg0) {
return 0;
}
@Override
public View getView(int position, View view, ViewGroup arg2) {
ViewHolder holder=ViewHolder.get(mContext, view, arg2, R.layout.item_listview, position);
// TextView tv=holder.getView(R.id.sssss);
// tv.setText(bean.get(position).getTitle());
(第二种写法)
((TextView)holder.getView(R.id.sssss)).setText(bean.get(position).getTitle());
return holder.getConvertView();
}
}
MainActivity里面和以前的写法一样
由于菜鸟一枚只能先写到这里 日后按照大神的例子 日渐完善