zoukankan      html  css  js  c++  java
  • 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; 

    }

    }

  • 相关阅读:
    光电缆线路安防综合监控网管运维方案
    5G时代 微波通信网络运维管理系统实施方案
    IT运维管理之NETCONF工具
    新基建 破局大规模数据中心智能化监控运维管理
    智慧工厂工业交换机网络运维管理系统
    智慧轨道交通云联网安防运维集成化管理系统应用方案
    智和网管平台SugarNMS万能命令工具 赋能IT智能运维
    智慧城市综合运维安防监控管理系统方案
    SugarNMS可视化智能运维 赋能数据中心安全管控
    下载时,经常看见ASC、MD5、SHA1等,是干什么的呢?
  • 原文地址:https://www.cnblogs.com/keyarchen/p/6062895.html
Copyright © 2011-2022 走看看