2010-12-06 10 views
2

ArrayAdapterをスクロール位置を失うことなくどのように更新しますか?Androidの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; 
} 

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

答えて

2

なぜ、最初にBaseAdapterを拡張しないのですか?そこにあなたのリストを内部的に更新しなければならないとnotifyDataSetChanged() ...

+0

私は現在のスクロール位置をリセットしないでしょうか? – hpique

+1

通常、リストは(少なくとも適切なスクロール位置がリストの範囲外でない限り)どこにいても保持する必要があります。 – mreichelt

関連する問題