【发布时间】:2015-11-12 21:40:09
【问题描述】:
我有一个 ListView,我用数据库中的数据填充它。
ArrayList<HashMap<String, String>> userList = dBcode.getAllUsers();
ListAdapter adapter = new SimpleAdapter(
Main_Activity.this,userList, R.layout.list_view_search_item, new String[]
{ "name", "age", },
new int[] {R.id.name, R.id.Age});
效果很好。
现在我想使用 ListView 中的值为 Listview 中的每一行创建一个新的 vResult,而不是像下面的示例那样键入它。
private Result[] resultArray = {
vResult("Thomas", "12"),
vResult("Mike", "15")};
这是从数据库中检索数据的代码。
public ArrayList<HashMap<String, String>> getAllUsers(){
ArrayList<HashMap<String, String>>userArrayList = new ArrayList<HashMap<String, String>>();
String selectQuery = "SELECT * FROM user ORDER BY name";
SQLiteDatabase database = this.getWritableDatabase();
Cursor cursor = database.rawQuery(selectQuery, null);
if(cursor.moveToFirst()){
do{
HashMap<String, String> contactMap = new HashMap<String, String>();
contactMap.put("name", cursor.getString(0));
contactMap.put("age", cursor.getString(1));
userArrayList.add(contactMap);
} while(cursor.moveToNext());
}
return userArrayList;
}
谢谢
【问题讨论】:
-
很难理解你的目标是什么
-
@Joseph82 我不想硬编码 resultArray 中的值,我希望它使用来自数据库的列表视图中的值。谢谢
-
您的数据库是远程数据库(即 Postgres、MongoDB、MySQL 数据库)还是本地数据库(SQLite)。另外,响应的格式是什么:如果它来自远程数据库? JSON?对于本地数据库,您应该返回对象列表,而不是 HashMap,其中对象具有名称和年龄等字段(例如,员工对象)
-
@LucasCrawford 它的 sqlLite,我已经包含了检索数据库数据的代码。谢谢
-
好吧,我是这么认为的。因此,与其创建 HashMap 并在 hashmap 中返回结果,不如返回 List
,其中 Person 是一个简单的 POJO,具有 name 和 age 字段。这将简化您的开发过程并允许在未来进行扩展!此外,您需要通过扩展 BaseAdapter 创建自己的适配器。虽然一个简单的适配器可以工作,但您最终还是需要做更多的事情,而 BaseAdapter 将允许您这样做。例如,使用 Person 数据自定义视图。
标签: java android listview android-adapter