• 5.2 Adapter


    1 ArrayAdapter

    只可以简单的显示一行文本

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(  
                                       this,  
                                       R.layout.item, //只能有一个定义了id的TextView  
                                       data); //data既可以是数组,也可以是List集合  

    2 SimpleAdapter

    可以显示比较复杂的列表,包括每行显示图片、文字等,但不能对列表进行后期加工,也是只是单纯的负责显示(当然可以设计复杂点的布局来显示复杂列表),例如,每行显示不同背景等。

    List<Map<String,Object>> mData= new ArrayList<Map<String,Object>>();;  
    for(int i =0; i < lengh; i++) {      
        Map<String,Object> item = new HashMap<String,Object>();      
        item.put("image", R.drawable.portrait);      
        item.put("title", mListTitle[i]);      
        item.put("text", mListStr[i]);      
        mData.add(item);       
    }      
    SimpleAdapter adapter = new SimpleAdapter(  
                    this,  
                    mData,        //Map 列表选项
                    R.layout.item,   //item布局   
                    new String[]{"image","title","text"},       // Map对象中的key
                    new int[]{R.id.image, R.id.title, R.id.text});  // item 布局中的 控件id

    在ListActivity的onCreate()中:setListAdapter(adapter);   //ListActivity不用setContentView()

    3 BaseAdapter

    可以实现复杂的列表布局,由于BaseAdapter是一个抽象类,使用该类需要自己写一个适配器继承该类,需要我们重写一些方法,让我们可以在代码里控制列表的样式,更加灵活。

        public class MyBaseAdapter extends BaseAdapter{  
                private LayoutInflater mInflater;  
               public MyAdapter(Context context){  
              this.mInflater = LayoutInflater.from(context);
           } @Override        
    public int getCount() { return mData.size(); } public Object getItem(int arg0) { return null; } public long getItemId(int arg0) { return 0; } public View getView(int position, View convertView, ViewGroup parent) { ViewHolder holder = null; if (convertView == null) { holder = new ViewHolder(); convertView = mInflater.inflate(R.layout.vlist2, null); holder.info = (TextView)convertView.findViewById(R.id.info); convertView.setTag(holder); // 为之后get做准备 }else //重复利用,以节省内存 holder = (ViewHolder)convertView.getTag(); holder.info.setText((String)mData.get(position).get("info")); return convertView; }    public final class ViewHolder{ // 内部类   public TextView info;        }    }

    public class MyBaseAdapter extends BaseAdapter

              private LayoutInflater mInflater

              public MyAdapter(Context context){  this.mInflater = LayoutInflater.from(context);  } 

                @Override 

    public int getCount() {  return mData.size();  } 

                public Object getItem(int arg0) {  return null;  } 

                public long getItemId(int arg0) { return 0;    } 

                public View getView(int position, View convertView, ViewGroup parent) { 

                    ViewHolder holder = null; 

                    if (convertView == null) { 

                        holder = new ViewHolder();  

                        convertView = mInflater.inflate(R.layout.vlist2, null);  

                        holder.info = (TextView)convertView.findViewById(R.id.info); 

                        convertView.setTag(holder);  // 为之后get做准备

                    }else    //重复利用,以节省内存

                        holder = (ViewHolder)convertView.getTag();  

                    holder.info.setText((String)mData.get(position).get("info"));   

                    return convertView; 

                } 

          public final class ViewHolder{   // 内部类

                public TextView info; 

    }

    }

  • 相关阅读:
    git ignore 添加忽略文件
    python| 闭包函数及装饰器
    python | DRF 框架知识总览
    python | CHROME底层原理和HTTP协议
    python| css 背景图片虚化效果
    python | js 图片与base64互相转换
    python | Linux各目录及每个目录的详细介绍
    python | 解决Django+Vue前后端分离的跨域问题及关闭csrf验证
    python | Nginx负载均衡策略
    python | Linux 搭建Nginx+uWSGI+Django环境
  • 原文地址:https://www.cnblogs.com/keyarchen/p/6062895.html
Copyright © 2020-2023  润新知