我需要以某种方式知道ListView实例的适配器何时更改。
我正在考虑向listView对象添加一个观察者,但它没有实现Observable接口。
strcpy(ac_mode, ac);
当列表视图的适配器发生变化时,还有其他方法可以知道吗?例如调用setAdapter()方法......?
---更新---
这是一个代码示例:
ListView listView;
listView.addObserver(...); // method does not exist!
我的问题是:final ListAdapter firstAdapter = new SimpleAdapter(
this,
new ArrayList<Map<String, Object>>(),
android.R.layout.simple_list_item_1,
new String[] {"AAA"},
new int[] {android.R.id.text1}
);
final ListAdapter secondAdapter = new SimpleAdapter(
this,
new ArrayList<Map<String, Object>>(),
android.R.layout.simple_list_item_1,
new String[] {"AAA"},
new int[] {android.R.id.text1}
);
setListAdapter(firstAdapter);
(new Timer()).schedule(new TimerTask() {
@Override
public void run() {
Runnable r = new Runnable() {
@Override
public void run() {
setListAdapter(secondAdapter);
}
};
new Handler(Looper.getMainLooper()).post(r);
}
}, 1000);
如何知道它何时与listView的实际适配器分离(因为firstAdapter
取代了它?)
答案 0 :(得分:0)
这是你在找什么?您可以在适配器上设置观察者。
答案 1 :(得分:0)
当它从ListView取消注册时,适配器会收到通知,所以我使用的是:
@Override
public void unregisterDataSetObserver(DataSetObserver observer) {
super.unregisterDataSetObserver(observer);
Log.d("Adapter just got unregistered from the listView!");
[...]
}