我正在创建自定义适配器视图。我最后一步所缺少的是让它响应其适配器的notifyDataSetChanged()
方法。
当数据发生变化时,例如:
myArrayOfData.remove(0); // remove first object
myAwesomeAdapter.notifyDataSetChanged();
我必须使用新的更新数据创建布局。
我的问题是我应该添加一个监听器(如果是这样哪个监听器并绑定在哪个对象上)?或者我应该覆盖AdapterView中的方法(如果是这样)?我觉得这里的文档非常模糊。
在向AdapterView发出更改通知后,我将重新绘制布局,例如requestLayout();
答案 0 :(得分:1)
您应该覆盖自定义AdapterView中的setAdapter
方法并注册/取消注册DataSetObserver
,例如:
private DataSetObserver mDataObserver = new DataSetObserver() {
@Override
public void onChanged() {
requestLayout();
}
@Override
public void onInvalidated() {
requestLayout();
}
};
@Override
public void setAdapter(ListAdapter adapter) {
if(mAdapter != null) {
mAdapter.unregisterDataSetObserver(mDataObserver);
}
mAdapter = adapter;
mAdapter.registerDataSetObserver(mDataObserver);
}