封装的viewholder和adapter
来源:互联网 发布:知乎 伊朗小公主 编辑:程序博客网 时间:2024/06/05 15:54
public class MyActivity extends Activity { private ListView mListView; private List<Info> mInfos = new ArrayList<Info>(); private Info info1 =new Info(); private Info info2 =new Info(); private Info info3 =new Info(); private Info info4 =new Info(); private Info info5 =new Info(); private Info info6 =new Info(); private Info info7 =new Info(); /** * Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); info1.setTitle("你484傻 第1条"); info1.setTime("20121230"); info1.setImageView(R.drawable.ic_launcher); info2.setTitle("你484傻 第2条"); info2.setTime("20121231"); info2.setImageView(R.drawable.image1); info3.setTitle("你484傻 第3条"); info3.setTime("20121231"); info3.setImageView(R.drawable.ic_launcher); info4.setTitle("你484傻 第4条"); info4.setTime("20121231"); info4.setImageView(R.drawable.image1); info5.setTitle("你484傻 第5条"); info5.setTime("20121231"); info5.setImageView(R.drawable.ic_launcher); info6.setTitle("你484傻 第6条"); info6.setTime("20121231"); info6.setImageView(R.drawable.image1); info7.setTitle("你484傻 第7条"); info7.setTime("20121231"); info7.setImageView(R.drawable.ic_launcher); mInfos.add(info1); mInfos.add(info2); mInfos.add(info3); mInfos.add(info4); mInfos.add(info5); mInfos.add(info6); mInfos.add(info7); mListView= (ListView) findViewById(R.id.listview); mListView.setAdapter(new CommonAdapter<Info>(getApplicationContext(), mInfos,R.layout.listview_item) { @Override public void convert(ViewHolder viewHolder, Info item) { viewHolder.setText(R.id.text_item,item.getTitle()); viewHolder.setImageResource(R.id.image_item,item.getImageView()); viewHolder.setText(R.id.textview2,item.getTime()); } }); String result= HttpUtils.doGetAsyn("http://www.weather.com.cn/data/sk/101010100.html",null); Log.d("123",result); }}
public abstract class CommonAdapter <T> extends BaseAdapter { protected LayoutInflater inflater; protected Context mContext; protected List<T> mDatas; protected final int mItemLayoutId; public CommonAdapter(Context mContext, List<T> mDatas, int mItemLayoutId) { this.mItemLayoutId = mItemLayoutId; this.inflater=LayoutInflater.from(mContext); this.mContext = mContext; this.mDatas = mDatas; } @Override public int getCount() { return mDatas.size(); } @Override public T getItem(int i) { return mDatas.get(i); } @Override public long getItemId(int i) { return i; } @Override public View getView(int position, View convertView, ViewGroup parent) { final ViewHolder viewHolder = getViewHolder(position, convertView, parent); convert(viewHolder, getItem(position)); return viewHolder.getConvertView(); } public abstract void convert(ViewHolder viewHolder, T item); private ViewHolder getViewHolder(int position, View convertView, ViewGroup parent) { return ViewHolder.get(mContext, convertView, parent, mItemLayoutId, position); }}
public class ViewHolder { private int mPosition; private final SparseArray<View> mViews;//松散数组 private View mConvertView; private ViewHolder(Context context, ViewGroup parent, int layoutId, int position) { this.mViews = new SparseArray<View>(); mConvertView = LayoutInflater.from(context).inflate(layoutId, parent, false); //setTag mConvertView.setTag(this); } /** * 拿到一个ViewHolder对象 * @param context * @param convertView * @param parent * @param layoutId * @param position * @return */ public static ViewHolder get(Context context, View convertView, ViewGroup parent, int layoutId, int position) { if (convertView == null) { return new ViewHolder(context, parent, layoutId, position); } return (ViewHolder) convertView.getTag(); } /** * 通过控件的Id获取对于的控件,如果没有则加入views * @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; } /** * 为TextView设置字符串 * * @param viewId * @param text * @return */ public ViewHolder setText(int viewId, String text) { TextView view = getView(viewId); view.setText(text); return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageResource(int viewId, int drawableId) { ImageView view = getView(viewId); view.setImageResource(drawableId); return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */ public ViewHolder setImageBitmap(int viewId, Bitmap bm) { ImageView view = getView(viewId); view.setImageBitmap(bm); return this; } /** * 为ImageView设置图片 * * @param viewId * @param drawableId * @return */// public ViewHolder setImageByUrl(int viewId, String url)// {// ImageLoader.getInstance(3, Type.LIFO).loadImage(url,// (ImageView) getView(viewId));// return this;// } public int getPosition() { return mPosition; }}
public class Info { private String title; private String time; private int imageView; public String getTitle() { return title; } public void setTitle(String title) { this.title = title; } public String getTime() { return time; } public void setTime(String time) { this.time = time; } public int getImageView() { return imageView; } public void setImageView(int imageView) { this.imageView = imageView; }}
0 0
- 封装的viewholder和adapter
- 封装好的万能ViewHolder和Adapter
- RecyclerView中Adapter和ViewHolder的封装
- RecyclerView的ViewHolder和Adapter的封装优化
- 封装Adapter ViewHolder
- HeaderAndFooterRecyclerView 带emptyview、头部header和尾部footer的封装 通用Adapter ViewHolder
- 关于Adapter和ViewHolder的另类写法
- RecyclerView的万能Adapter和ViewHolder
- ListView的adapter(用到ViewHolder和convertview)
- adapter的优化---配合上一篇viewHolder的封装
- 【FirstKotlinApp】使用Kotllin封装Adapter时ViewHolder的一点技巧
- RecyclerView,Adapter和ViewHolder
- 自定义Adapter和ViewHolder
- 对BaseAdapter和ViewHolder的封装
- Android 封装RecyclerView.Adapter,省其ViewHolder
- RecyclerView和Adapter 以及ViewHolder
- Android 通用的ViewHolder和Adapter的打造
- 属于RecyclerView的万能适配器Adapter和ViewHolder
- http://www.cnblogs.com/holyknight-zld/archive/2012/08/09/wcf_uploadpic.html
- 笨办法学Python学习笔记 练习16
- iOS各种开源类库
- Datatable 添加新列并赋值
- android的事件分发相关
- 封装的viewholder和adapter
- Windows下更改MySQL数据库的存储位置
- AndroidStudio快捷键
- RotateAnimation旋转动画Demo
- 浅谈Java Final关键字
- C 常用函数整理
- 面试笔试技巧
- Python学习手册 - 10
- js省市联动,多版本,总有你喜欢的