Android 如何在Multicolumn ListView中通过HashMap从DBHelper检索数据

Android 如何在Multicolumn ListView中通过HashMap从DBHelper检索数据,android,hashmap,Android,Hashmap,我想通过HashMap在DBHelper类的多列ListView中查看我的记录。这将以多列形式显示我的数据,而且所有行都可以单击。我有一些困难。我的密码在这里 DBHelper.java public ArrayList<HashMap<String, String>> getdata(){ ArrayList<HashMap<String, String>> maplist = new ArrayList<HashMap&

我想通过HashMap在DBHelper类的多列ListView中查看我的记录。这将以多列形式显示我的数据,而且所有行都可以单击。我有一些困难。我的密码在这里

DBHelper.java

 public ArrayList<HashMap<String, String>> getdata(){
        ArrayList<HashMap<String, String>> maplist = new ArrayList<HashMap<String,String>>();
        SQLiteDatabase db = getReadableDatabase();
        String query = "select * from tbexpenses";
        Cursor c = db.rawQuery(query, null);
        if(c.moveToFirst()){
            do{
                HashMap<String, String> map = new HashMap<String, String>();
                for(int i=0; i<c.getColumnCount();i++){
                    map.put(c.getColumnName(i), c.getString(i));
                }
                }while (c.moveToNext());
            }db.close();
            return maplist;
    }  

将此代码替换为问号

list.clear();
DBHelper helper = new DBHelper();
list = helper.getdata();
编辑1:getdata()方法中的错误

还要检查
getdata()
函数

public ArrayList<HashMap<String, String>> getdata(){
    ArrayList<HashMap<String, String>> maplist = new ArrayList<HashMap<String,String>>();
    SQLiteDatabase db = getReadableDatabase();
    String query = "select * from tbexpenses";
    Cursor c = db.rawQuery(query, null);
    if(c.moveToFirst()) {
        do {
            // you are creating map here but not adding this map to list
            HashMap<String, String> map = new HashMap<String, String>();
            for(int i=0; i<c.getColumnCount();i++) {
                map.put(c.getColumnName(i), c.getString(i));
            }
            // so do add it here
            maplist.add(map);
        } while (c.moveToNext());
    }
    db.close();
    return maplist;
}
public ArrayList getdata(){
ArrayList映射列表=新建ArrayList();
SQLiteDatabase db=getReadableDatabase();
String query=“从tbexpenses中选择*”;
游标c=db.rawQuery(查询,空);
if(c.moveToFirst()){
做{
//您正在此处创建地图,但未将此地图添加到列表中
HashMap=newHashMap();

对于(int i=0;i)您的问题是什么。这里显示的是DBHelper中包含完整行的空列表。您的意思是什么?您是否在表“tbexpenses”中插入了任何值?不,我想从DBHelper中获取hashmap列中的值需要更多信息,您的问题不清楚。这将非常有帮助
public class Constants {

public static final String FIRST_COLUMN="First";
public static final String SECOND_COLUMN="Second";
public static final String THIRD_COLUMN="Third";
public static final String FOURTH_COLUMN="Fourth";
}
list.clear();
DBHelper helper = new DBHelper();
list = helper.getdata();
public ArrayList<HashMap<String, String>> getdata(){
    ArrayList<HashMap<String, String>> maplist = new ArrayList<HashMap<String,String>>();
    SQLiteDatabase db = getReadableDatabase();
    String query = "select * from tbexpenses";
    Cursor c = db.rawQuery(query, null);
    if(c.moveToFirst()) {
        do {
            // you are creating map here but not adding this map to list
            HashMap<String, String> map = new HashMap<String, String>();
            for(int i=0; i<c.getColumnCount();i++) {
                map.put(c.getColumnName(i), c.getString(i));
            }
            // so do add it here
            maplist.add(map);
        } while (c.moveToNext());
    }
    db.close();
    return maplist;
}