zoukankan      html  css  js  c++  java
  • Android BaseAdapter

    ListView显示与缓存机制:
         只会加载当前屏幕所要显示的数据。显示完成就会被回收到Recycler中。
     
     
     
    BaseAdapter 基本结构:
         public int getCount();     // 适配器中数据集中数据的个数
         public Object getIten(int position);     //获取数据集中与指定索引对应的数据项
         public long getItemId(int position);     //获取指定行对应的ID
         public View getView(int position,View convertView,ViewGroup parent);     //获取每一个Item的显示内容
     
     
    ViewHolder优化BaseAdapter:
              创建Bean对象,用于封装数据。
              在构造方法中初始化用于映射的数据LIST.
              创建ViewHolder类,创建布局映射关系。
              判断convertView,为空则创建,并设置TAG,否则通过TAG来取出ViewHolder
              给ViewHolder中的控件设置数据。
     
     
    public class Adapter extends BaseAdapter{
     
            private List<ItemBean> list ;
            private LayoutInflater inflater ;
           
            public Adapter(List<ItemBean> list,Context context){
                  list= this.list ;
                   //context要使用当前的Adapter的界面对象 minflater布局装载器对象
                   inflater=LayoutInflater. from(context);
           }
           
            @Override
            public int getCount() {
                   // TODO Auto-generated method stub
                   return list .size();
           }
     
            @Override
            public Object getItem(int position) {
                   // TODO Auto-generated method stub
                   return list .get(position);
           }
     
            @Override
            public long getItemId(int position) {
                   // TODO Auto-generated method stub
                   return position;
           }
     
            /**
            * 返回每一项所显示的内容
            */
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                  ViewHold viewHold;
                   if(convertView==null){
                         viewHold= new ViewHold();
                         convertView= inflater.inflate(R.layout. item, null );
                         viewHold .ima geView=(ImageView) convertView.findViewById(R.id.IVimage );
                         viewHold. title= (TextView) convertView.findViewById(R.id.title );
                         viewHold. content=(TextView) convertView.findViewById(R.id.text );
                         convertView.setTag(viewHold);
                  } else{
                         viewHold=(ViewHold) convertView.getTag();
                         
                  }
                  ItemBean bean= list.get(position);
                  viewHold. imageView.setImageResource(bean.getImageid());
                  viewHold. title.setText(bean.getTitle());
                  viewHold. content.setText(bean.getText());
                   return convertView;
           }
           
           
            class ViewHold{
                   public ImageView imageView ;
                   public TextView title ;
                   public TextView content ;
           }
    }
    stareblankly.cn
  • 相关阅读:
    Oracle--pl/sql编程-分支语句(判断、循环)
    axios二次封装及API接口统一管理
    Vuejs之axios获取Http响应头
    对webpack和gulp的理解和区别
    nodejs+redis使用
    Linux安装Nginx、Redis、django
    js 原型里面写方法
    在layui中使用 jquery 触发select 的 change事件无效
    promise看这篇就够了
    vue 封装原型方法 加 promist .then
  • 原文地址:https://www.cnblogs.com/stareblankly/p/4844184.html
Copyright © 2011-2022 走看看