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; 

    }

    }

  • 相关阅读:
    Android Studio 单刷《第一行代码》系列 05 —— Fragment 基础
    Android Studio 单刷《第一行代码》系列 04 —— Activity 相关
    Android Studio 单刷《第一行代码》系列 03 —— Activity 基础
    Android Studio 单刷《第一行代码》系列 02 —— 日志工具 LogCat
    Android Studio 单刷《第一行代码》系列 01 —— 第一战 HelloWorld
    IDEA 内网手动添加oracle,mysql等数据源,以及server returns invalid timezone错误配置
    eclipse maven设置
    IntelliJ IDE 常用配置
    eclipse maven 常见问题解决方案
    Maven 安装和配置
  • 原文地址:https://www.cnblogs.com/keyarchen/p/6062895.html
Copyright © 2011-2022 走看看