zoukankan      html  css  js  c++  java
  • ABaseApdater

    只上代码不多说话

    public abstract class ABaseAdapter extends BaseAdapter{
    
             Context context;
         
             protected ABaseAdapter(Context context) {
                 this.context = context;
             }
         
             protected ABaseAdapter() {
             }
         
             /**
             * 各个控件的缓存
             */
             public class ViewHolder{
                 public SparseArray<View> views = new SparseArray<View>();
        
                 /**
                  * 指定resId和类型即可获取到相应的view
                  * @param convertView
                  * @param resId
                  * @param <T>
                  * @return
                  */
                 public <T extends View> T obtainView(View convertView, int resId){
                    View v = views.get(resId);
                     if(null == v){
                         v = convertView.findViewById(resId);
                         views.put(resId, v);
                     }
                     return (T)v;
                 }
         
           }
         
             /**
              * 改方法需要子类实现,需要返回item布局的resource id
              * @return
              */
             public abstract int itemLayoutRes();
         
             @Override
             public View getView(int position, View convertView, ViewGroup parent) {
                 ViewHolder holder;
                 if(null == convertView){
                     holder = new ViewHolder();
                     convertView = LayoutInflater.from(context).inflate(itemLayoutRes(), null);
                     convertView.setTag(holder);
                 }else{
                     holder = (ViewHolder) convertView.getTag();
                 }
                 return getView(position, convertView, parent, holder);
             }
             
        
             /**
              * 使用该getView方法替换原来的getView方法,需要子类实现
              * @param position
              * @param convertView
              * @param parent
             * @param holder
              * @return
              */
             public abstract View getView(int position, View convertView, ViewGroup parent, ViewHolder holder);
         
    }

    ABaseAdapter的用法:

    1:编写适配类直接继承该ABaseAdapter。

    2.在构造方法中调用父类的方法:

        即:

    public MyAdapter(Context context){
            super(context);
        }

    3:重写父类方法itemLayoutRes():

    @Override
    public int itemLayoutRes() {
    
    return R.layout.caipu_griditem;//返回布局的文件
    }

    4:重写父类额抽象方法getView(),绑定数据:

        @Override
        public View getView(int position, View convertView, ViewGroup parent,
                ViewHolder holder) {
            
            ImageView imageView = holder.obtainView(convertView, R.id.cp_grid_img);
            TextView textView = holder.obtainView(convertView, R.id.cp_grid_text);
            imageView.setBackgroundResource(IMAGES[position]);
            textView.setText(TITLES[position]);
        
            return convertView;
        }

    结果简洁了许多。好东西,记得要分享!

  • 相关阅读:
    H5 _拖放使用
    CSS _text-align:justify;实现两端对齐
    Tips_钉钉免登前端实现
    快速组建的开发团队要怎么活下来?
    程序员,你的安全感呢?
    从自我驱动到带领10人团队
    你会给别人提反馈吗?
    简单几步成为微信公众平台开发者
    你了解javascript中的function吗?(1)
    容器之路 HashMap、HashSet解析(一)
  • 原文地址:https://www.cnblogs.com/wei1228565493/p/4684782.html
Copyright © 2011-2022 走看看