リストアダプターのnotifyDatasetChanged()
を処理するための2つのパターンに気づきました。私は2つを区別するものと、他のものよりも優れているものがあるかどうか疑問に思っていました。データセットのアクティビティ/フラグメント内のローカル変数を保持まずフラグメント/アクティビティ内または直接アダプター内のデータセットを更新
。
private List<Movie> movieList;
private SwipeListAdapter adapter;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
listView = (ListView) findViewById(R.id.listView);
swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe_refresh_layout);
movieList = new ArrayList<>();
adapter = new SwipeListAdapter(this, movieList);
そしてローカル変数の変更は、アクティビティ/フラグメントでこれを呼び出す:断片にアダプターに空DatasetSet
配列を渡す
adapter.notifyDataSetChanged();
セカンド
/アクティビティ。
EmployeeAdapter mAdapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
mAdapter = new EmployeeAdapter(this, new ArrayList<Employee>());
ListView employeeListView = (ListView) findViewById(R.id.employees);
employeeListView.setAdapter(mAdapter);
}
とデータを呼び出し、この変更または取得されたとき:
mAdapter.setEmployees(data);
Adapter
クラス自体は、この方法を表す:
public void setEmployees(List<Employee> data) {
employees.addAll(data);
notifyDataSetChanged();
}