【问题标题】:wrong listview gets deleted in baseadapter inspite of correct position尽管位置正确,但在 baseadapter 中删除了错误的列表视图
【发布时间】:2017-07-04 04:34:21
【问题描述】:

我正在尝试从我的自定义基本适配器中删除一个列表视图项。这是我的代码。

@Override 
public View getView(int position, View view, ViewGroup parent) 
{ 
    infoList.remove(position);
    notifyDataSetChanged(); 
}

我的列表视图嵌入在 SwipeRefreshLayout 中。 listview 的最后一项总是被删除,因为 List infoList 中的错误项被删除,即使是正确的位置传递给它。

【问题讨论】:

  • 不应删除适配器的 getView 方法中的内容。请显示更多代码,例如 Adapter 和 Fragment/Activity 类。
  • 我没有使用回收站视图。我正在使用带有自定义基本适配器的列表视图。我首先从列表中删除该项目,然后通知DataSetChange。它从列表视图中删除了错误的 utem。阅读我的代码。
  • @Saret 我无法在基本适配器类本身中执行 adapter.remove(object) 。以及如何获取变量对象
  • @Saret 你似乎不知道在说什么
  • @NarayanAcharya 所说的是正确的。您不应该从 getView() 方法中删除项目。当列表视图需要创建另一行来显示您的下一个项目时,它会被调用。调用 notifyDataSetChanged() 可能会导致更多后续调用 getView() 和奇怪的行为。如果要从列表视图中删除行,请将这些代码行移至其他方法。还要确保您已经实现了适配器 getCount(),因此当您调用 notifyDataSetChanged() 时,适配器将检测到您的项目较少并刷新您的列表。

标签: android list listview arraylist baseadapter


【解决方案1】:

我所要做的就是不将视图中所有元素的可见性设置为 GONE,将视图元素的所有填充和边距设置为 0。在 mysql db 中成功删除后,listview 项消失。这是在自定义适配器类中完成的。

【讨论】:

    猜你喜欢
    • 2020-04-08
    • 2021-07-07
    • 1970-01-01
    • 2020-10-29
    • 2016-12-25
    • 2015-11-22
    • 2014-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多