ListAdapter接口

转载http://book.51cto.com/art/201211/363103.htm

Adapter接口提供了对数据源访问的基本形式,比如取得数据id的方法getItemId(int position),取得数据内容的方法getItem(int position)等,Adapter接口有一个最重要的子接口即ListAdapter接口,这个接口的作用是使ListView控件与数据源之间建立起一个桥梁,通过这个桥梁,ListAdapter接口就可以把数据源中的数据显示到ListView控件中,接口ListAdapter声明如图3.4所示。

 
图3.4  ListAdapter接口的声明与详细信息

从图3.4中可以看到,ArrayAdapter是ListAdapter的直接子类,而ArrayAdapter是泛型类,那么比较好地使用自定义Adapter对象的方式是继承自ArrayAdapter类。

新建extendsArrayAdapter项目,新建Userinfo.java类,有3个属性,即id、username和password。

新建Adapter适配器类文件GhyArrayAdapter.java,代码如下:

 
 
  1. package extadapter;  
  2.  
  3. import java.util.List;  
  4.  
  5. import android.content.Context;  
  6. import android.widget.ArrayAdapter;  
  7. import entity.Userinfo;  
  8.  
  9. public class GhyArrayAdapter extends ArrayAdapter<Userinfo> {  
  10.     public GhyArrayAdapter(Context context, int textViewResourceId,  
  11.             List<Userinfo> objects) {  
  12.         super(context, textViewResourceId, objects);  
  13.     }  
  14. }  

Activity对象Main.java核心代码如下:
  1. public class Main extends Activity {  
  2.     @Override  
  3.     public void onCreate(Bundle savedInstanceState) {  
  4.         super.onCreate(savedInstanceState);  
  5.         setContentView(R.layout.main);  
  6.  
  7.         List<Userinfo> userinfoList = new ArrayList<Userinfo>();  
  8.         for (int i = 0; i < 10; i++) {  
  9.             Userinfo userinfo = new Userinfo("" + (i + 1),  
  10.                     "username" + (i + 1), "password" + (i + 1));  
  11.             userinfoList.add(userinfo);  
  12.         }  
  13.  
  14.         GhyArrayAdapter adapter = new GhyArrayAdapter(this,  
  15.                 android.R.layout.simple_list_item_1, userinfoList);  
  16.         System.out.println(adapter.getItem(2).getUsername());  
  17.  
  18.     }  
  19. }  

    程序运行后正确打印出指定索引位置的username属性值,如图3.5所示。

    通过这个示例可以看到继承自ArrayAdapter类可以非常方便地操作集合中的数据,而这样的功能在BaseAdapter中却不存在,因为BaseAdapter提供的方法功能非常有限,如图3.6所示。

     
    图3.5  正确打印username值

     
    图3.6  BaseAdapter方法列表
    那么,在上文提到的ListView又是什么呢?下面我们来介绍ListView对象的使用。

    对象ListView是实现一个垂直滚动的列表,列表中的数据来自于ListAdapter对象,它的类声明信息如图3.7所示。

     
    图3.7  ListView对象的声明

    所以ListView对象结合ListAdapter的实现类就能实现将ListAdapter实现类中的数据显示到垂直列表中。而ListAdapter接口的实现类有许多,比较常用的有ArrayAdapter对象。

    ArrayAdapter对象是ListAdapter的实现类,类声明如图3.8所示。

    但在图3.8中并没有看到ListAdapter字样,因为ArrayAdapter类的父类BaseAdapter实现了ListAdapter接口,BaseAdapter类声明如图3.9所示。

     
    图3.8  ArrayAdapter类声明
     
    图3.9  BaseAdapter类声明

    默认情况下,ArrayAdapter对象将其中的数据显示到1个TextView控件中,所以在布局文件中一定要有这个TextView控件,但Android本身已经提供了许多默认的布局文件可供程序员使用,不需要再重复创建它们就可以将Adapter中的数据显示到View中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值