使用Listview Data Android填充JSON对象



我有一个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;
}

感谢

如果不使用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;
    }
}

并从数据库中创建用户对象:

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());

最新更新