适配器Adapter填充数据

来源:互联网 发布:数据采集费 编辑:程序博客网 时间:2024/05/06 12:14

             GridView、LIstView、Spinner.可以使用adapter填充数据。常用的adapter有ArrayAdapter、SimpleAdapter、SimpleCursorAdapter、BaseAdapter。

             ArrayAdapter:默认情况下,ArrayAdapter只能显示文本信息,在自定义ArrayAdapter后可以实现丰富的数据显示。

           例:  ListView listview = new ListView(this);  

                   ArrayAdapter<String> adapter = new ArrayAdapter<String>(this,Android.R.layout.simple_expandable_list_item_1);                                           adapter.add("string1");  

                      adapter.add("haha");  

                      adapter.add("heihei");        

                    listview.setAdapter(adapter); 

            SimpleAdapter:使用simpleAdapter的数据用一般都是HashMap构成的List,list的每一节对应ListView的每一行。HashMap的每个键值数据映射到布局文件中对应id的组件上。

            构造HashMap的List数据:

            private List<Map<String, Object>> getData() { 
List<Map<String, Object>> list = new ArrayList<Map<String, Object>>(); 
Map<String, Object> map = new HashMap<String, Object>(); 
map.put("title", "G1"); 
map.put("info", "google 1"); 
map.put("img", R.drawable.i1); 
list.add(map); 
return list; 
    }

             BaseAdapter:大多数布局中不仅需要显示数据,还需要对列表中每一项进行相关操作,常见的是添加了点击按钮,这时就需要自定义BaseAdapter来实现数据显示并进行相关操作。

             在使用BaseAdapter时,涉及到对列表控件数据优化。

             步骤:

              一、复用view布局

                     在getView()方法中:

                     if (convertView == null) {
viewHolder = new ViewHolder();
convertView = inflater.inflate(R.layout.peoplechat_friends_item, null);
view = convertView;
viewHolder.icon = (ImageView) convertView
.findViewById(R.id.peoplechat_mealsend_item_icon);
viewHolder.name = (TextView) convertView
.findViewById(R.id.peoplechat_mealsend_item_name);
viewHolder.addfriends_selector = (RadioButton) convertView
.findViewById(R.id.peoplechat_mealsend_addfriends_selector);
convertView.setTag(viewHolder);
} else {
viewHolder = (ViewHolder) convertView.getTag();
}

              二、使用ViewHolder创建唯一控件对象

     private static class ViewHolder {
// 头像
public ImageView icon;
// 姓名
public TextView name;
// 邀约按钮
public RadioButton addfriends_selector;
      }

               按钮操作:使用按钮时一般是点击事件,我们需要对列表中某一项进行点击操作。

                       viewHolder.addfriends_selector.setOnClickListener((OnClickListener)mContext);//mContext 上下文对象
            viewHolder.addfriends_selector.setTag(position);//点击某一项所在的位置,getView()中有这个参数

               除了点击事件,有时需要对列表中的某一项进行修改操作;需要注意的是,我们在做修改时,改变的是数据源数据。

                       private List<CacheAddFriend>friends;

              public void setClearFlag(int position,boolean ischecked){
CacheAddFriend addFriend=(CacheAddFriend)getItem(position);
if(ischecked){
       addFriend.checked_sendcache_friends = true;
}else {
addFriend.checked_sendcache_friends = false;
}
friends.set(position, addFriend);
}

                        

               




0 0