【发布时间】:2016-04-18 16:54:21
【问题描述】:
我注意到处理列表适配器notifyDatasetChanged() 的两种模式。我想知道这两者的区别是什么,如果一个比另一个更好。
第一
在数据集的 Activity/Fragment 中保存一个局部变量。
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);
然后当局部变量发生变化时,在Activity/Fragment中调用这个:
adapter.notifyDataSetChanged();
第二
将一个空的DatasetSet 数组传递给片段/活动中的适配器。
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();
}
【问题讨论】:
标签: android android-fragments adapter listadapter