ListViewで部分リフレッシュを実現する2つの方法
ListViewで部分更新を実現するための2つの方法を以下に示します。
- ListView全体を更新するには、notifyDataSetChanged()メソッドを利用する方法があります。最も簡単な手法で、AdapterのnotifyDataSetChanged()メソッドを呼び出すと、ListView全体が更新されます。この時、AdapterのgetView()メソッドが再呼び出しされ、すべてのリストアイテムが再描画されます。ただし、変更が少数のみのアイテムであっても、すべてのリストアイテムが再描画されるため、効率は良くありません。
- notifyItemChanged()メソッドはリスト項目を特定の場所で更新するために使用します。このメソッドを使用すると部分的な更新ができ、特定の場所のリスト項目のみが更新されます。最初に、アダプターのデータソースを変更した後、notifyItemChanged()メソッドを使用してRecyclerViewに部分的な更新を通知します。このメソッドは、特定の場所のリスト項目のみを再描画し、他のリスト項目は再描画しないため、効率的です。
指定位置のリスト項目を更新するために notifyItemChanged() メソッドを使用するコードサンプルを次に示します。
// 修改指定位置的数据
dataList.set(position, newData);
// 刷新指定位置的列表项
adapter.notifyItemChanged(position);
リスト項目を更新する際はこのメソッドを使用するが、引数positionの正しさには注意する必要がある。正しくない場合、誤った更新や配列外アクセスなどのエラーが発生する。