我有一个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;
}
由于
答案 0 :(得分:1)
如果不是使用HashMap,您可能会更容易创建一个类来保存用户字段(使用getter / setter方法):
public class User {
private String mName;
private String mAge;
public User(String name, String age){
mName = name;
mAge = age;
}
public String getName(){
return mName;
}
public String getAge(){
return mAge;
}
public String setName(String name){
mName = name;
}
public String setAge(String age){
mAge = age;
}
}
并从数据库创建一个User对象:
ArrayList<User> userArrayList = new ArrayList<User>();
...
contact = new User(cursor.getString(0), cursor.getString(1));
userArrayList.add(contact);
您可以调用adapter.getItem(position)
返回特定索引处的数据对象:
User user = (User)adapter.getItem(0);
然后将数据转换为您喜欢的任何格式。也许是这样的:
private Result[] resultArray = new Result[1];
resultArray[0] = vResult(user.getName(), user.getAge());