問題:今天在實驗xamarin中SimpleAdapter綁定到ListView時,出現閃退的現象,
見圖:JavaDictionary<string, object>();
item.Add("Name", "張三);
item.Add("Sex", "Male");
data.Add(item);
使用VS2012自帶的Android Device Logging 工具可以看見如下信息:
原因:
vs2012中無法使用代碼檢查出此問題,屬於運行時問題,但是異常又無法正確拋出,通過Android Device Logging 工具才能看見,原來是因為System.Collections.Generic.Dictionary無法在運行時轉換為java.util.Map,而Android.Runtime.JavaDictionary可以,至於為什麼無法轉換,無非就是沒有繼承的關系.
Mono for android是很好,但這個也太坑了吧,非要面向接口,好歹弄個文檔說明一下。
如果 你用的是 listActivity的話 是不需要 setContentView()的,而且你的布局裡又有ListView,這樣肯定會報錯,會提示 找不到listview的id
你隨便放的什麼數據,把數據放進去後
SimpleAdapter simpleAdapter;
simpleAdapter.notifyDataSetChanged();
simpleAdapter.notifyDataSetInvalidated();
調這兩個方法,源碼在下邊,然後再通知adapter相對應的組件更新就可以啦。
/**
* Notifies the attached View that the underlying data has been changed
* and it should refresh itself.
*/
public void notifyDataSetChanged() {
mDataSetObservable.notifyChanged();
}
public void notifyDataSetInvalidated() {
mDataSetObservable.notifyInvalidated();
}