Android 将数据从对话框插入SQLi后,自定义listview不刷新
我像这样从对话框向SQLi插入数据Android 将数据从对话框插入SQLi后,自定义listview不刷新,android,listview,android-adapter,Android,Listview,Android Adapter,我像这样从对话框向SQLi插入数据 builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialogInterface, int i) { ContentValues cv = new
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ContentValues cv = new ContentValues();
cv.put(DBHelper.COL_VEHICLE_TYPE, 1);
cv.put(DBHelper.COL_OPTION_NAME, "driver");
cv.put(DBHelper.COL_DATE, mDisplayDate.getText().toString());
db.insert(DBHelper.TABLE_NAME, null, cv);
cursor.requery();
adapter.notifyDataSetChanged();
}
});
我在函数onResume()中查询数据,以在列表视图中显示,如下所示
public void onResume() {
super.onResume();
lst_driver.clear();
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 ;
String vh_name;
while(cursor.moveToNext())
{
map = new HashMap<String,String>();
vh_name= dbHelper.VehicleType(cursor.getString(1));
map.put("vehicle_type", vh_name);
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(DriverLicenseActivity.this,lst_driver, R.layout.activity_list_layout, showColumns, views);
lv_driver.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
public void onResume(){
super.onResume();
lst_驱动程序。清除();
db=dbHelper.getWritableDatabase();
String[]queryColumns=新字符串[]{“\u id”,DBHelper.COL\u车辆类型,DBHelper.COL\u选项名称,DBHelper.COL\u日期};
cursor=db.query(DBHelper.TABLE_NAME,queryColumns,null,null,
空,空,空);
HashMap图;
字符串vh_名称;
while(cursor.moveToNext())
{
map=新的HashMap();
vh_name=dbHelper.VehicleType(cursor.getString(1));
地图放置(“车辆类型”,车辆名称);
map.put(“date”,cursor.getString(3));
lst_驱动程序添加(映射);
}
字符串[]showColumns=新字符串[]{“车辆类型”,“日期”};
int[]views=newint[]{R.id.ColType,R.id.ColDate};
适配器=新的SimpleAdapter(DriverLicenseActivity.this,lst\u驱动程序,R.layout.activity\u列表\u布局,showColumns,视图);
lv_驱动器设置适配器(适配器);
adapter.notifyDataSetChanged();
}
插入数据后,它不会显示在列表视图中。我必须再次打开此活动,然后它将显示在列表视图中。如何在插入SQLi之后在列表视图中显示数据?似乎在插入SQLite之前调用了onResume方法。我建议您将更新适配器的部分分开,并在插入后立即调用此方法。您可以在一个功能中创建数据获取,只需在从
onClick
和onResume()插入数据后调用即可。
在ArrayListAdd中添加项目后,您是否使用了
notifyDataChanged()
,是否调用了适配器类alsofirst check on resume方法?还有后adpter
private void getData() {
lst_driver.clear();
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 ;
String vh_name;
while(cursor.moveToNext())
{
map = new HashMap<String,String>();
vh_name= dbHelper.VehicleType(cursor.getString(1));
map.put("vehicle_type", vh_name);
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(DriverLicenseActivity.this,lst_driver, R.layout.activity_list_layout, showColumns, views);
lv_driver.setAdapter(adapter);
adapter.notifyDataSetChanged();
}
public void onResume() {
getData();
}
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialogInterface, int i) {
ContentValues cv = new ContentValues();
cv.put(DBHelper.COL_VEHICLE_TYPE, 1);
cv.put(DBHelper.COL_OPTION_NAME, "driver");
cv.put(DBHelper.COL_DATE, mDisplayDate.getText().toString());
db.insert(DBHelper.TABLE_NAME, null, cv);
cursor.requery();
getData();
}
});