使用Listview数据Android填充JSON对象

时间:2015-11-12 21:40:10

标签: java android listview android-adapter

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

}

由于

1 个答案:

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