从ListView的开头删除项目

时间:2014-04-24 19:02:46

标签: android listview android-listview android-arrayadapter

我有一个小应用程序加载图像,将它们放在ListView中。我希望ListView中的项目有限制,当最后添加新图像时,图像将在开始时删除。我当前的实现,虽然有效,但不能很好地删除项目。 这是我目前的代码:

if (adapter.getCount() > 20) {
    for (int i = 0; i < 10; i++) {
        adapter.remove(adapter.getItem(0));
    }
}
adapter.notifyDataSetChanged();

问题是位置保持不变,但所有图像都会移位,这意味着会跳过几个图像。

1 个答案:

答案 0 :(得分:0)

这个答案似乎解释了可能导致问题的原因:

https://stackoverflow.com/a/11027830/3570280

这两种解决方案中的一种可能会解决您的问题:

如果图片似乎保留了以前的位置,请尝试将 i 置于0:

if (adapter.getCount() > 20) {
    for (int i = 0; i < 10; i++) {
        adapter.remove(adapter.getItem(i));
    }
}
adapter.notifyDataSetChanged();

这可以帮助您跟上位置的变化。

每次删除时“刷新”适配器及其周围环境可能会重置图像的位置:

if (adapter.getCount() > 20) {
    for (int i = 0; i < 10; i++) {
        adapter.remove(adapter.getItem(0));
        adapter.notifyDataSetChanged();
    }
}

我建议尝试两者并对代码块进行微调以使其正常工作。也许甚至可以同时尝试这两种解决方案。