Android 从ListView的开头删除项

Android 从ListView的开头删除项,android,listview,android-listview,android-arrayadapter,Android,Listview,Android Listview,Android Arrayadapter,我有一个小应用程序,可以加载图像,将它们放在列表视图中。我想在ListView中有一个项目限制,当在末尾添加新图像时,一个图像在开头被删除。我当前的实现虽然有效,但不能很好地删除项。 这是我目前的代码: if (adapter.getCount() > 20) { for (int i = 0; i < 10; i++) { adapter.remove(adapter.getItem(0)); } } adapter.notifyDataSetCha

我有一个小应用程序,可以加载图像,将它们放在列表视图中。我想在ListView中有一个项目限制,当在末尾添加新图像时,一个图像在开头被删除。我当前的实现虽然有效,但不能很好地删除项。 这是我目前的代码:

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

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

此答案似乎可以解释可能导致问题的原因:

以下两种解决方案之一可能会解决您的问题:

如果图像似乎保持了以前的位置,请尝试将i放入0:

if (adapter.getCount() > 20) {
    for (int i = 0; i < 10; i++) {
        adapter.remove(adapter.getItem(i));
    }
}
adapter.notifyDataSetChanged();
if(adapter.getCount()>20){
对于(int i=0;i<10;i++){
移除(adapter.getItem(i));
}
}
adapter.notifyDataSetChanged();
这可能会帮助您跟上位置的变化

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

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

我建议尝试这两种方法,并对代码块进行一些小的调整,以使其正常工作。甚至可以同时尝试这两种解决方案。

使用队列中使用的相同逻辑如何(您实际上是在尝试遵循队列中使用的FIFO原则)。您可以只使用一个标记来跟踪最后一个图像添加到列表中的索引,当它达到该大小时,您可以重置它并从0开始。我仍然不能完全确定你的问题。如果我错了,请纠正我