Android Adapter详解

Android Adapter 是将数据绑定到UI 界面上的桥接类。 Adapter负责创建和显示每个项目的子View和提供对下层数据的访问。支持Adapter绑定的UI控件必须扩展Adapter View抽象类。创建自己的继承自AdapterView的控件和创建新的Adapter类来绑定它们是可能的。

Android 系统本身提供了两种现成的Adapter 供我们使用。

1.ArrayAdapter:它是一个绑定View到一组对象的通用类。默认情况下,ArrayAdapter绑定每个对象的toString值到layout中预先定义的TextView空间上。构造函数允许用户使用更加复杂的Layout或者通过重写getView方法来扩展类从而使用TextView的替代物

2.SimpleCursorAdapter:它绑定ViewContent Provider 查询返回的游标上。指定一个XML layout定义,然后将数据集的每一列的值绑定到layout中的一个View

 

写自己的Adapter类实现更多复杂的UI界面和数据绑定

   
public class MyAdapter extends SimpleAdapter {
    
      
private LayoutInflater mInflater;
      
private Context context;
      
private List<Map<String,Object>> list;
      
private int resource;
      
private String[] tags;
      
private int[] ids;
      
public MyAdapter(Context context, List<Map<String,Object>> items, int resource,
              String[] tags,
int[] ids) {
          
super(context, items, resource, tags, ids);
          
          
this.mInflater = LayoutInflater.from(context);
          
this.context = context;
          
this.list = items;
          
this.resource = resource;
          
this.tags = tags;
          
this.ids = ids;
      }
      
      
public int getCount() {
          
return list.size();
      }
      
      
public Object getItem(int position) {
          
return list.get(position);
      }
      
      
public long getItemId(int position) {
          
return position;
      }
      
      
public View getView(final int position, View convertView, ViewGroup parent) {
          convertView 
= super.getView(position, convertView, parent);
          
if (convertView == null) {  
              Toast.makeText(context, 
"this is null"2000).show(); 
             
         
          } 
else {   
              
          } 
         
          ImageView more 
= (ImageView) convertView.findViewById(R.id.iv_more); 
          
          more.setOnClickListener(
new View.OnClickListener() {
              
public void onClick(View arg0) {
                  Intent intent 
= new Intent(context, VehicleInfoActivity.class);
                  intent.putExtra(
"vehicleID", VehicleListActivity.idList.get(position));
                  intent.putExtra(
"CameraID""0");
                  Toast.makeText(context, 
"sssssss"2000).show();  
                  context.startActivity(intent);
                  
      
              }
          });
          
          
return convertView;
      }
}

主要重载getCount 方法,getView方法 getItem方法 getItemId方法; 参数解析:context:传入的上下文Activity, items 绑定数据的列表, resource layout布局ID, tags 绑定数据的key, ids Item 中对应key的资源ID getView中自定义Item里面的事件监听,自定义新的重载后的显示界面返回 convertView 如果需要使用到父类SimpleAdapter 显示效果需要调用super.getView方法为 convertView 赋值。

posted on 2012-07-06 11:19 gps梦想 阅读(2673) 评论(0)  编辑  收藏 所属分类: JAVA基础android开发


只有注册用户登录后才能发表评论。


网站导航:
博客园   IT新闻   Chat2DB   C++博客   博问  
 
<2012年7月>
24252627282930
1234567
891011121314
15161718192021
22232425262728
2930311234

导航

统计

常用链接

留言簿

随笔分类

随笔档案

搜索

最新评论

阅读排行榜

评论排行榜