在ArrayAdapter中不调用getView()

时间:2014-04-30 09:35:48

标签: android android-arrayadapter

我正在使用CustomListView来显示数据库中的联系人详细信息。我的输出中没有ListViewgetView()的{​​{1}}方法未被调用。我的代码是,

ViewContact 活动

CustomListViewAdapter

修改 添加了getCount()方法和构造函数中所做的更改为super(context,resourceId,items);

 final DBAdapter dba = new DBAdapter(ctx);
dba.open();
Cursor c = dba.getContact();
    if(c.moveToFirst())
{

do
    {
        idstr[i]=c.getInt(0);
        sfname[i] = c.getString(1);
        slname[i] = c.getString(2);
        smob[i] = c.getString(3);
        semail[i] = c.getString(4);
        sphoto[i]=c.getString(5);

        sname[i]=sfname[i]+" "+slname[i];


         RowItem item = new RowItem(sphoto[i],sname [i], smob[i],semail[i]);
           System.out.println(" item.."+item);
            rowItems.add(item);
            System.out.println("row item.."+rowItems);
        i++;

    }while(c.moveToNext());



} 


 CustomListViewAdapter adapter = new CustomListViewAdapter(this,
         R.layout.list_item, rowItems);
            viewContact.setAdapter(adapter);

提前致谢...

2 个答案:

答案 0 :(得分:1)

  1. 不要扩展ArrayAdapter。这是不好的做法。创建自己的基本适配器并扩展它。在您的情况下,您实际上应该使用CursorAdapter而不是基于列表的适配器。
  2. 您的数据库中有数据,对吧?
  3. 你有一个错误(与1相关),你必须覆盖getCount方法。如果你不这样做,它将使用你完全忽略的内部列表(继承自ArrayList)。

答案 1 :(得分:1)

使用ArrayAdapter(Context, int)超级构造函数时,适配器中的数组为空。请改用ArrayAdapter(Context, int, T[]),将数组传递给超级构造函数。