【发布时间】: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