【问题标题】:Android listview delete data but listview not updateAndroid listview删除数据但listview不更新
【发布时间】:2018-09-16 20:45:21
【问题描述】:

我删除了 SQLi 中的数据,但列表视图没有更新。我必须先打开活动,然后列表视图才会更新。

这是函数删除数据。

private void delData(int position) {


    cursor.moveToPosition(position);
    String rowId = cursor.getString(0);
    db.delete(DBHelper.TABLE_NAME, "_id = ?", new String[]{rowId});

    cursor.requery();
    adapter.notifyDataSetChanged();

}

这是 OnCreate 中的函数 OnItemClick。

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_driver);

    dbHelper = new DBHelper(DriverActivity.this);

    lv_driver=(ListView)findViewById(R.id.lv_driver);
    lv_driver.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

            delData(i);

        }
    });
}

删除数据后如何更新列表视图?

【问题讨论】:

  • 您必须从列表的数据源中删除数据。

标签: android android-studio listview


【解决方案1】:

我删除了 SQLi 中的数据,但 ListView 没有更新。我必须再次打开活动,然后ListView 将更新。

是的,您从 SQLite 中删除项目而不是从您的 ListView 中删除项目是正常的。

删除数据后如何更新ListView

您可以重新创建 ListView 或删除您的项目 adapter.remove(position);

例子:

private void delData(int position) {
    cursor.moveToPosition(position);
    String rowId = cursor.getString(0);
    db.delete(DBHelper.TABLE_NAME, "_id = ?", new String[]{rowId});   
    cursor.requery();
    adapter.remove(position);
    adapter.notifyDataSetChanged();

}

【讨论】:

  • 谢谢。我必须在 List> lst 中删除。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-12-29
  • 1970-01-01
  • 1970-01-01
  • 2012-03-01
相关资源
最近更新 更多