【问题标题】:Remove data in ListView删除 ListView 中的数据
【发布时间】:2015-08-18 12:06:58
【问题描述】:

为什么当我删除数据库并删除 ListView 时,ArrayList 中的数据没有被删除而是变为 null。这是我向 ArrayList 添加数据时的代码:

List<FormPermohonanKredit> list = datasourcePK.getAllFormPK();
    final ListIterator<FormPermohonanKredit> li = list.listIterator();

final String[] ListNamaNasabah = new String[list.size()];

int i = 0;
while(li.hasNext()){
    FormPermohonanKredit form = li.next();

    String Nama = form.getInfoPokok() != null ? form.getInfoPokok().getNama() : "null";
    ListNamaNasabah[i] = Nama;

i++;
}

final ArrayList<Long> userList = new ArrayList<Long>();
userList.addAll(Arrays.asList(ListNamaNasabah));

listAdapter = new ArrayAdapter<String>(this, R.layout.activity_row_list, userList);

mainListView.setAdapter(listAdapter);

这是我删除数据库和删除 ListView 的方法:

IDTable = IDList.get(position);

MySQLiteHelper db=new MySQLiteHelper(getApplicationContext());
db.delete("" + IDTable);

userList.remove(position);
listAdapter.notifyDataSetChanged();

我猜在将“null”更改为不同的文本后,它也会发生变化,但没有任何变化,它始终为空。删除前后的这个 ArrayList :

  • 删除前

  • 删除后

我想清除我选择位置的 ArrayList,而不是更改为 null。

【问题讨论】:

  • 重新加载页面.. 再次加载内容!试试
  • U 正在创建和设置适配器再次执行一次,稍后在数据更改时执行 notifyDataSetChanged()
  • 我相信你的问题应该很简单。让我明白,在代码 userList.addAll(...) 之后,您的 ID = 3,Nama = Wisnu,对吗?在代码 userList.remove(position) 之后,你得到 ID = 0,Nama = null,对吗?而且该代码只执行一次,对吗?
  • 你的命名习惯听起来像马来语或印尼语:-),对吗?
  • 试试这个调试...在你的代码 userList.remove() 之前和之后打印 userList.size(),只是为了看看你在 ArrayList 中有多少元素。对于打印,您可以使用 Log.d()。了解 (ngerti) 吗?

标签: java android listview arraylist android-listview


【解决方案1】:

发布的代码有些缺失,因为我看不到代码之间的明确关系。也许在您的适配器中显示更多代码。无论如何,据我所知,我有一个代码建议: 更改自:

IDList.addAll(Arrays.asList(LisNamaNasabah));

到:

userList.addAll(Arrays.asList(LisNamaNasabah));

注意事项:

  • 请注意,我正在填充userList。据我在当前发布的代码中看到的,当前代码正在填充 IDList 的数据,该数据不用于适配器。但它确实向我解释了如何获得空值和零的结果。

【讨论】:

  • 对不起,我创建问题时的错误,但在我的代码中,您的代码与我的完全相同
  • 列表 列表 = datasourcePK.getAllFormPK();最终 ListIterator li = list.listIterator(); String[] ListNamaNasabah = new String[list.size()];
  • @Wisnu,那么您是否尝试过上面建议的代码?现在怎么样了?
  • 建议的代码与我的完全相同。结果保持不变,当我重新打开 ListView Activity 时仍然为空
  • @Wisnu,我建议的代码与您的不同。仔细看你的帖子。除非您没有正确更新您的帖子。如果您需要帮助,请务必更新,不要误导他人。
【解决方案2】:

从了解你过去的cmets,你的代码取决于列表,代码:

List<FormPermohonanKredit> list = datasourcePK.getAllFormPK();

我怀疑datasourcePK 从数据库中获取数据。当您重新启动 Activity 或 App 时,数据会恢复为零/空值。这表明代码从数据库中删除了一条记录。

您的代码:

db.delete("" + IDTable);

这会删除数据库中的一条记录,甚至可能删除整个表!

结论: 您的代码从数据库中删除了一条记录。我认为这就是您的应用程序的意图!从您的帖子看来,ArrayList 的删除方法和删除记录不起作用,但它是......

我希望这能为你解释一切,一切都结束了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 2013-07-12
    • 2015-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-25
    • 2018-06-01
    相关资源
    最近更新 更多