我有一个应用程序,其中我想通过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吗?
答案 0 :(得分:12)
使用
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的默认android.R.id.text1
布局
activity_list_item
作为TextView ID