android开发之&万能Adapter,让你的代码更简洁

今天给大家分享一个万能adapter,自认为特别好用,哈哈!

直接上代码

public class TagBaseAdapter extends BaseAdapter {
    private Context mContext;
    private List<TagBean> mList;

    public TagBaseAdapter(Context context,List<TagBean> list){
        mContext=context;
        mList=list;
    }
    @Override
    public int getCount() {
        return mList.size();
    }

    @Override
    public Object getItem(int position) {
        return mList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        ViewHolder holder;
        if (convertView == null) {
            convertView = LayoutInflater.from(mContext).inflate(R.layout.tagview, null);
            holder = new ViewHolder();
            holder.tagBtn = (Button) convertView.findViewById(R.id.tag_btn);
            convertView.setTag(holder);
        }else{
            holder = (ViewHolder)convertView.getTag();
        }
        TagBean bean = (TagBean) getItem(position);
        holder.tagBtn.setText(bean.title);
        if (bean.isCheck){
            holder.tagBtn.setBackgroundColor(mContext.getResources().getColor(R.color.colorAccent));
        }
        return convertView;
    }
    static class ViewHolder {
        Button tagBtn;
    }
}
接下来是Holder,里面给控件赋值方法不是很完善,大家需要什么方法可以自己加
 
 
public class ViewHolderUtils {
   private SparseArray<View> mView;
   private int mPosition;
   private View mConvertView;
   
   
   public ViewHolderUtils(Context context, ViewGroup parent, int layoutId, int position){
      this.mPosition=position;
      this.mView=new SparseArray<View>();
      mConvertView=LayoutInflater.from(context).inflate(layoutId, parent,false);
      mConvertView.setTag(this);
   }
   
   public static ViewHolderUtils get(Context context,View converView,ViewGroup parent,int layoutId,int position){
      if (converView==null) {
         return new ViewHolderUtils(context, parent, layoutId, position);
      }else{
         ViewHolderUtils holder=(ViewHolderUtils) converView.getTag();
         holder.mPosition=position;
         return holder;
      }
   }
   
   public <T extends View> T getView(int viewId){
      View view=mView.get(viewId);
      if (view==null) {
         view=mConvertView.findViewById(viewId);
         mView.put(viewId, view);
      }
      return (T) view;
   }
   
   public View getConvertView(){
      return mConvertView;
   }
   
   
   /**
    * 设置textview的值
    * @param viewId
    * @param text
    * @return
    */
   public ViewHolderUtils setText(int viewId,String text){
      TextView textView=getView(viewId);
      textView.setText(text);
      return this;
   }
   /**
    * 设置textview背景
    */
   public ViewHolderUtils setTextImageResource(int viewId,int resId){
      getView(viewId).setBackgroundResource(resId);
      return this;
   }
   /**
    * 设置图片
    * @param viewId
    * @param resId
    * @return
    */
   public ViewHolderUtils setImageResource(int viewId,int resId){
      ImageView view=getView(viewId);
      view.setImageResource(resId);
      return this;
   }
   /**
    * 设置图片
    * @param viewId
    * @return
    */
   public ViewHolderUtils setImageBitmap(int viewId,Bitmap bitmap){
      ImageView view=getView(viewId);
      view.setImageBitmap(bitmap);
      return this;
   }
   /**
    * 设置RatingBar显示
    */
   public ViewHolderUtils setRatingBarText(int viewId,int number){
      RatingBar ratingBar=getView(viewId);
      ratingBar.setRating(number);
      return this;
   }
}
最后就是怎么使用这个自定义adapter,很简单
 
 
listView.setAdapter(new CommonAdapter<String>(list,getApplicationContext(),R.layout.item_TextView) {
    @Override
    public void convert(ViewHolderUtils holder, final String str, int position) {
        holder.setText(R.id.tv_tagTitle,str!=null?str:""); 
    }
});
其中CommonAdapter<String>这个String可以替换成任意的实体类,怎么样,是不是用起来会特别爽
什么!想要点击事件?简单  只需要在convert中这样做就可以了
holder.getView(R.id.btn_cancel)..setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        
    }
});

 
 
 
 


猜你喜欢

转载自blog.csdn.net/jie1123161402/article/details/54136381