【问题标题】:ArrayAdapter:you must supply a resource id for a textviewArrayAdapter:您必须为 textview 提供资源 id
【发布时间】:2012-11-26 14:26:56
【问题描述】:

我有一个应用程序,我想用 SQLite 数据库中的数据填充 ListView...在这部分我有一个问题,arrayAdapter...

这是我的listView填充方法代码:

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_list);
    PetListView = (ListView)findViewById(R.id.list);


    MyDatabaseHelper db = new MyDatabaseHelper(this);
    String [] items = new String[100];


    List<Pet> pets = db.getAllPets();
    for (int i = 0; i < 10; i++) {
        items[i] = pets.get(i).getName();                   
    }

    ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, android.R.layout.activity_list_item, R.id.textView1list, items);
    PetListView.setAdapter(adapter);

}

这是在我的数据库助手中实现的方法:

public List<Pet> getAllPets() {
    List<Pet> petList = new ArrayList<Pet>();
    String selectQuery = "SELECT * FROM " + TABLE_PETS;

    SQLiteDatabase db = this.getWritableDatabase();
    Cursor cursor = db.rawQuery(selectQuery, null);

    if (cursor.moveToFirst()) {
        do {
            Pet pet = new Pet();
            pet.setID(Integer.parseInt(cursor.getString(0)));
            pet.setName(cursor.getString(1));
            pet.setAge(cursor.getString(2));
            petList.add(pet);
        } while (cursor.moveToNext());
    }
    cursor.close();
    return petList;     
}

为什么选择 textView?我只使用 ListView...

谁能告诉我如何通过 SQLite 中的数据(名称)填充 listView?

【问题讨论】:

  • TextView 是显示数据的众多可能方式之一。列表视图中的每个项目都需要以某种方式显示。使用TextView 将其显示为文本。

标签: android sqlite listview android-arrayadapter


【解决方案1】:

使用

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
          android.R.layout.activity_list_item, android.R.id.text1, items);

代替

 ArrayAdapter<String> adapter = new ArrayAdapter<String>(this, 
            android.R.layout.activity_list_item, R.id.textView1list, items);

如果您为 ListView 使用默认的 activity_list_item 布局,则使用 android.R.id.text1 作为 TextView id

【讨论】:

  • 我试过这个,但它抛出了其他异常 ArrayAdapter: NullpointerException
  • 当然你会得到 NullpointerException 因为你传递了大小为 100 的数组,但你只向 items 数组添加了 10 个元素
  • @andrew:还有什么问题吗?
猜你喜欢
  • 1970-01-01
  • 2012-09-08
  • 2016-08-14
  • 1970-01-01
  • 2011-08-20
  • 1970-01-01
  • 1970-01-01
  • 2011-10-12
相关资源
最近更新 更多