Java 使用列表填充ListView
我正在尝试显示来自sqlite数据库的数据。在我的DatabaseHandler.java中,我有以下方法:Java 使用列表填充ListView,java,android,sqlite,listview,arraylist,Java,Android,Sqlite,Listview,Arraylist,我正在尝试显示来自sqlite数据库的数据。在我的DatabaseHandler.java中,我有以下方法: public List<Item> getAllItemsinList() { List<Item> itemList = new ArrayList<Item>(); // Select All Query String selectQuery = "SELECT * FROM " + TABLE_ITEMS; S
public List<Item> getAllItemsinList() {
List<Item> itemList = new ArrayList<Item>();
// Select All Query
String selectQuery = "SELECT * FROM " + TABLE_ITEMS;
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery(selectQuery, null);
// looping through all rows and adding to list
if (cursor.moveToFirst()) {
do {
Item item = new Item();
item.set_id(Integer.parseInt(cursor.getString(0)));
item.set_name(cursor.getString(1));
item.set_description(cursor.getString(2));
// Adding contact to list
itemList.add(item);
} while (cursor.moveToNext());
}
// return item list
return itemList;
}
private void populateListViewUsingList(){
List<Item> items;
items = db.getAllItemsinList();
listView = (ListView) findViewById(R.id.listItems);
ArrayAdapter<Item> itemArrayAdapter = new ArrayAdapter<Item>(this,android.R.layout.simple_list_item_1, items);
listView.setAdapter(itemArrayAdapter);
}
listview已填充,但显示的是对象,而不是数据库包含的数据。显示的文本示例为migueld.rivera.catalogapp。Item@42a97320。解析数据的正确方法是什么?谢谢
显示的文本示例如下所示
migueld.rivera.catalogapp。Item@42a97320. 正确的方法是什么
解析数据
ArrayAdapter获取对象列表,并在从列表返回项时调用字符串方法。get
方法。请参见以下内容:
T item = getItem(position);
if (item instanceof CharSequence) {
text.setText((CharSequence)item);
} else {
text.setText(item.toString());
}
所以
选项1:重写Item
类中的toString方法,该方法返回Item对象的可读字符串表示形式
@Override
public String toString() {
return String.format(name + "---" + description);
}
选项2:通过扩展ArrayAdapter创建自定义适配器:
发生这种情况是因为您直接显示对象。在适配器的getview方法中尝试这种方式
Items item = getItem(position);
textView.setText(item.get_name()+....+item.get_description);
使用您在类中声明的适当方法名
此处显示了中的自定义listview适配器示例
请参见问题您可能希望覆盖Item的toString()方法以使其正确显示My
Item
类当前不是toString方法。你是说我应该做一个吗?是的,它目前正在使用默认的实现。我们将研究这些。到目前为止,选项2是我所需要的。谢谢。@MiguelRivera:是的,因为在重写getView方法后,您可以调用Item类中的所有getter方法来获取值,并在不同的文本视图“sHi@ρƏσѕρєK”中显示,该示例显示数组中的数据。是否建议将我的列表
转换为数组或修改适配器类以接受列表
?@MiguelRivera:无需将列表转换为数组,只需将列表对象传递给自定义适配器类,并在自定义适配器类中使用列表对象而不是数组即可。我从事过跨平台开发,对本机编码已经生疏了。这篇教程帮了大忙。谢谢她还没有适配器。这可能需要扩展以包括您需要创建自定义适配器的事实