2

ArrayAdapterスクロール位置を失わずに更新するにはどうすればよいですか?

これが私が現在行っている方法です。ArrayAdapter次のことを行うサブクラスにupdate メソッドを作成します。

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;
}

ただし、これは非常に非効率的でエラーが発生しやすいようです。より良い方法はありますか?

4

1 に答える 1

2

そもそもなんで延長しないBaseAdapterの?そこで、リストを内部的に更新してから呼び出す必要がありますnotifyDataSetChanged()... :-)

于 2010-12-06T21:06:47.737 に答える