注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

民主与科学

独立之人格,自由之思想

 
 
 

日志

 
 

ArrayAdapter  

2010-05-15 11:48:17|  分类: 数据适配器 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
ArrayAdapter<T>
        继承于BaseAdapter
    ArrayAdapter(数组适配器)的作用就是一个数组和listview之间的桥梁,
java.lang.Object
    android.widget.BaseAdapter
        android.widget.ArrayAdapter<T>
It has no Subclasses 
public class ArrayAdapter extends BaseAdapter implements Filterable

Class Overview

A ListAdapter that manages a ListView backed by an array of arbitrary objects.
 By default this class expects that the provided resource id references a single TextView. 
 If you want to use a more complex layout, use the constructors that also takes a field id.
 That field id should reference a TextView in the larger layout resource. 
 However the TextView is referenced, it will be filled with the toString() of each object in the array. 
 You can add lists or arrays of custom objects. Override the toString() method of your objects to determine 
 what text will be displayed for the item in the list. 
 To use something other than TextViews for the array display, 
 for instance, ImageViews, or to have some of data besides toString() results fill the views,
 override getView(int, View, ViewGroup) to return the type of view you want.

ArrayAdapter 可以将数组里边定义的数据一一对应的显示在Listview 里边。
    ListView的每个 TextView里边显示的内容就是数组里边的对象调用toString()方法后生成的字符串。
 例子1:
        ListView listview=new ListView(this);
        // 构造一个listview对象
        String[] data = {“google”,”amazon”,”facebook”};
        // 构造一个数组对象,也就是数据
        listview.setAdapter(new ArrayAdapter(this,android.R.layout.simple_list_item_single_choice, data));
        //构造一个array适配器,然后listview对象通过setAdapter方法调用适配器来和自己绑定数据
        list.setItemsCanFocus(true);
        list.setChoiceMode(listview.CHOICE_MODE_MULTIPLE);
        setContentView(listview);
注:
ArrayAdapter和ListView的更多使用参照《     [url=javascript:;][img]../../../../ac/b.gif[/img][/url]    [url=javascript:;]                    ListActivity和ListView》[/url]
 例子2:
 
        String[] textData = {
                "Google mail",
                "Messaging",
                "PicSay"                
        };            
        int[] imgData = {
                R.drawable.alertdialogsample1xml_pink,
                R.drawable.alertdialogsample1xml_pink,
                R.drawable.alertdialogsample1xml_pink
        };
        
        
        ArrayList<AlertDialogSample10Item> al = new ArrayList<AlertDialogSample10Item>();
        
        for(int i=0; i < 3 ; i++)
            al.add(new AlertDialogSample10Item(imgData, textData));        
        
        AlertDialogSample10Adapter listadapter10 = new AlertDialogSample10Adapter(this, R.layout.alertdialogsample1xml_sample10_row_item, al);            
        
        AlertDialog.Builder alertdialog10 = new AlertDialog.Builder(AlertDialogSample1Xml.this);
        
        alertdialog10.setTitle(R.string.alertdialogsample1xml_sharepicturevia);
        alertdialog10.setIcon(R.drawable.alertdialogsample1xml_title_icon_photobucket);
        
        /* 
         *  set custom list apdater to alertdialog body
         */
        alertdialog10.setAdapter(listadapter10, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int which) {
                Toast.makeText(context, (which + 1) + " item click", Toast.LENGTH_SHORT).show();
            }
        });
                        
        return alertdialog10.create();

     class AlertDialogSample10Item{
        private Integer mAppIcon;
        private String mAppName;
        
        public AlertDialogSample10Item(Integer appicon, String appname){
            this.mAppIcon = appicon;
            this.mAppName = appname;
        }
        
        public Integer getAppIcon(){
            return mAppIcon;
        }
        
        public String getAppName(){
            return mAppName;
        }
        
    }

    private class AlertDialogSample8Adapter extends ArrayAdapter<AlertDialogSample8Item> {
        private ArrayList<AlertDialogSample8Item> items;
        
        public AlertDialogSample8Adapter(Context context, int textViewResourceId, ArrayList<AlertDialogSample8Item> items) {
            super(context, textViewResourceId, items);
            this.items = items;
        }
        

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
                View v = convertView;
                if (v == null) {
                    LayoutInflater vi = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                    v = vi.inflate(R.layout.alertdialogsample1xml_sample8_row, null);
                }
                
                AlertDialogSample8Item ti = items.get(position);
                if (ti != null) {
                        ImageView appicon = (ImageView) v.findViewById(R.id.appicon);
                        TextView appname = (TextView) v.findViewById(R.id.apptext);
                        
                        if (appicon != null){
                            appicon.setImageResource(ti.getAppIcon());                            
                        }
                        if (appname != null){
                            appname.setText(ti.getAppName());                            
                        }
                }
                return v;
        }
    }
  评论这张
 
阅读(2798)| 评论(1)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017