在Android中更新ArrayAdapter

在Android中更新ArrayAdapter,android,android-arrayadapter,Android,Android Arrayadapter,如何在不丢失滚动位置的情况下更新阵列适配器 我现在就是这样做的。我在ArrayAdapter子类中创建了一个更新方法,该方法执行以下操作: public void update(List<MyEntity> entities) { for (MyEntity entity : entities) { int position = this.getPosition(entity); if (position >= 0) {

如何在不丢失滚动位置的情况下更新
阵列适配器

我现在就是这样做的。我在
ArrayAdapter
子类中创建了一个更新方法,该方法执行以下操作:

public void update(List<MyEntity> entities) {
    for (MyEntity entity : entities) {
        int position = this.getPosition(entity);
        if (position >= 0) {
            final MyEntity outdateEntity = this.getItem(position);
            this.insert(entity, position);
            this.remove(outdateEntity);
        } else {
            this.insert(entity, 0);         
        }
    }
}

public int getPosition(MyEntity updatedEntity) {
    for (int i = 0; i < this.getCount(); i++) {
        if (this.getItem(i).getId() == updatedEntity.getId()) {
            return i;
        }
    }
    return -1;
}
公共作废更新(列出实体){
for(MyEntity实体:实体){
int position=this.getPosition(实体);
如果(位置>=0){
最终MyEntity outdateEntity=this.getItem(位置);
插入(实体、职位);
删除(过期实体);
}否则{
本条。插入(实体,0);
}
}
}
public int getPosition(MyEntity UpdateEndity){
for(int i=0;i

然而,这似乎是非常低效和容易出错的。有更好的方法吗?

为什么不首先扩展?在这里,您只需在内部更新列表,然后调用…:-)

这不会重置当前的滚动位置吗?通常不会-列表应该保持在原来的位置(至少如果适当的滚动位置没有超出列表的范围)。