温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

Android中如何使用Adapter工具类

发布时间:2021-06-29 15:36:01 来源:亿速云 阅读:189 作者:Leah 栏目:移动开发

这篇文章给大家介绍Android中如何使用Adapter工具类,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。

Adapter是连接后端数据和前端显示的适配器接口,是数据和UI(View)之间一个重要的纽带。在常见的View(ListView,GridView)等地方都需要用到Adapter。

每个开发工程师都会有自己的一些常用到的工具类,今天我分享一下我自己总结的关于Adapter的工具类,话不多说直接上代码

CommonAdapter:

public abstract class CommonAdapter<T> extends BaseAdapter {   protected LayoutInflater mInflater;   protected Context mContext;   protected List<T> mDatas;   protected final int mItemLayoutId;   public CommonAdapter(Context context, List<T> mDatas, int itemLayoutId)   {     this.mContext = context;     this.mInflater = LayoutInflater.from(mContext);     this.mDatas = mDatas;     this.mItemLayoutId = itemLayoutId;   }   @Override   public int getCount()   {     return mDatas.size();   }   @Override   public T getItem(int position)   {     return mDatas.get(position);   }   @Override   public long getItemId(int position)   {     return position;   }   @Override   public View getView(int position, View convertView, ViewGroup parent)   {     final ViewHolder viewHolder = getViewHolder(position, convertView,         parent);     convert(viewHolder, getItem(position) , position);     return viewHolder.getConvertView();   }   public abstract void convert(ViewHolder helper, T item , int postion);   private ViewHolder getViewHolder(int position, View convertView,       ViewGroup parent)   {     return ViewHolder.get(mContext, convertView, parent, mItemLayoutId,         position);   } }

ViewHolder:

public class ViewHolder {   private final SparseArray<View> mViews;   private int mPosition;   private View mConvertView;   private ViewHolder(Context context, ViewGroup parent, int layoutId,       int position)   {     this.mPosition = 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)   {     ViewHolder holder = null;     if (convertView == null)     {       holder = new ViewHolder(context, parent, layoutId, position);     } else     {       holder = (ViewHolder) convertView.getTag();       holder.mPosition = position;     }     return holder;   }   public View getConvertView()   {     return mConvertView;   }   /**    * 通过控件的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;   }   /**    * 为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;   } }

MyAdapter:

public class MyAdapter extends CommonAdapter<String> {   private List<String> mData ;   public MyAdapter(Context context, List<String> mDatas, int itemLayoutId)   {     super(context, mDatas, itemLayoutId);     this.mDatas = mDatas ;   }   @Override   public void convert(final ViewHolder helper, final String item , int postion)   {     /**      * 第一种      */     helper.setImageResource(R.id.item_ib01, R.drawable.ic_launcher);     helper.setImageResource(R.id.item_iv01,         R.drawable.ic_launcher);     helper.setText(R.id.item_tv01, "我是第"+mDatas.get(postion)+"个") ;     // 通过路径设置图片 //   helper.setImageByUrl(R.id.id_item_image, mDirPath + "/" + item);   /*    * 第二种    */     /*      *     final ImageView item_iv = helper.getView(R.id.item_iv01);     final ImageButton item_ib = helper.getView(R.id.item_ib01);     TextView item_tv = helper.getView(R.id.item_tv01) ;     item_tv.setText("我是第"+mDatas.get(postion)+"个") ;     item_iv.setImageResource(R.drawable.ic_launcher);     item_ib.setColorFilter(Color.parseColor("#77000000"));      */   } }

关于Android中如何使用Adapter工具类就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI