Java SimpleAdapter在while循环中显示相同的数据

Java SimpleAdapter在while循环中显示相同的数据,java,android,sqlite,android-studio,Java,Android,Sqlite,Android Studio,我向SQLite添加了许多数据,但我的列表视图只显示最后插入的数据。所有行都有相同的值 public void onResume() { super.onResume(); db = dbHelper.getWritableDatabase(); String[] queryColumns = new String[]{"_id", DBHelper.COL_VEHICLE_TYPE, DBHelper.COL_OPTION_NAME

我向SQLite添加了许多数据,但我的列表视图只显示最后插入的数据。所有行都有相同的值

    public void onResume() {

        super.onResume();

        db = dbHelper.getWritableDatabase();

        String[] queryColumns = new String[]{"_id", DBHelper.COL_VEHICLE_TYPE, DBHelper.COL_OPTION_NAME,DBHelper.COL_DATE };

        cursor = db.query(DBHelper.TABLE_NAME, queryColumns, null,null,
               null,null,null);

        HashMap<String,String> map = new HashMap<String,String>();

        while(cursor.moveToNext())
        {

            map.put("vehicle_type", cursor.getString(1));
            map.put("date", cursor.getString(3));
            lst_driver.add(map);
        }

        String[] showColumns = new String[]{"vehicle_type", "date"};
        int[] views = new int[] {R.id.ColType, R.id.ColDate};

        adapter = new SimpleAdapter(DriverActivity.this,lst_driver, R.layout.activity_list_layout, showColumns, views);
        lv_driver.setAdapter(adapter);
}
我的代码中没有使用任何更新表函数。它应该显示来自SQLite的所有不同值的数据。我应该如何修复它?

试试这个:

HashMap<String,String> map;
while(cursor.moveToNext())
        {
            map = new HashMap<String,String>();
            map.put("vehicle_type", cursor.getString(1));
            map.put("date", cursor.getString(3));
            lst_driver.add(map);
        }
HashMap;
while(cursor.moveToNext())
{
map=新的HashMap();
map.put(“车辆类型”,cursor.getString(1));
map.put(“date”,cursor.getString(3));
lst_驱动程序添加(映射);
}

您的问题来自此代码段。问题是
map
始终是同一个map实例,您只是在更改它所包含的内容

HashMap map=newhashmap();
while(cursor.moveToNext())
{
map.put(“车辆类型”,cursor.getString(1));
map.put(“date”,cursor.getString(3));
lst_驱动程序添加(映射);
}
一个简单的解决方法是每次使用不同的地图:

while(cursor.moveToNext())
{
    HashMap<String,String> map = new HashMap<String,String>();
    map.put("vehicle_type", cursor.getString(1));
    map.put("date", cursor.getString(3));
    lst_driver.add(map);
}
while(cursor.moveToNext())
{
HashMap=newHashMap();
map.put(“车辆类型”,cursor.getString(1));
map.put(“date”,cursor.getString(3));
lst_驱动程序添加(映射);
}

通过在
while
循环中移动
映射
声明和初始化,可以保证循环中的每个迭代都使用不同的
映射
实例。

是否检查了数据库,其中的所有值是否都不同?
HashMap<String,String> map = new HashMap<String,String>();

while(cursor.moveToNext())
{

    map.put("vehicle_type", cursor.getString(1));
    map.put("date", cursor.getString(3));
    lst_driver.add(map);
}
while(cursor.moveToNext())
{
    HashMap<String,String> map = new HashMap<String,String>();
    map.put("vehicle_type", cursor.getString(1));
    map.put("date", cursor.getString(3));
    lst_driver.add(map);
}