我正在寫一個音樂播放器,使用擴展BaseAdapter的自定義適配器(效率適配器),我想要使用setAdapter()
在AlertDialog
中顯示,其中用戶可以點擊其中一首歌曲切換到播放列表中的該位置,或者選中要從播放列表中刪除的歌曲。我嘗試使用自定義點擊偵聽器,以便用戶可以長按一下以從列表中刪除項目,但listview
只是不能正常工作......它刪除了錯誤的項目(最後的那些),即使ArrayList
包含正確的播放列表項目...(當我從ArrayList
中刪除該項目時,我將它傳遞給了名爲notifyDataSetChanged
的適配器...但是,這只是不起作用,因爲我提到了這個。AlertDialog ListView
...因爲沒有理由從最後彈出結果而不是正確的項目如何將setMultiChoiceItems()與使用效率arrayadapter的Custom AlertDialog一起使用?
所以...我想嘗試的下一個方法是使用AlertDialog
的setMultiChoiceItems()
方法...但它似乎不適用於自定義適配器......只有簡單的陣列我必須繼承AlertDialog
和Override
的setMultiChoiceItems()
方法,或者有什麼辦法可以使它與ArrayAdapter
一起使用?
基本上,我不知道如何甚至迭代AlertDialog
創建的列表或者它是否以某種方式傳遞該視圖。另外,如果我將這些添加到行中,我認爲我甚至不會聽到點擊checkboxes
。任何幫助將不勝感激。
編輯:在這裏提出的問題就像魔術......我回答了我自己的問題......這就是我做到的。我給每個checkbox
添加了一條提示,這是該商品在ArrayList
中的位置。然後我用OnCheckedChangeListener
來捕捉選擇。當你設置一個提示時,它將文本添加到checkbox
...因爲AlertDialog
的背景是白色的(即使對於單擊的項目?)我只是將提示文本顏色設置爲透明。
holder.check.setHintTextColor(Color.TRANSPARENT);
holder.check.setHint(String.valueOf(position));
holder.check.setOnCheckedChangeListener(new OnCheckedChangeListener() {
public void onCheckedChanged(CompoundButton buttonView,
boolean isChecked) {
int position = Integer.parseInt((String) buttonView.getHint());
Log.v("onCheckedChanged", "Checked: "+isChecked+" returned: "+position+" which should be "+getItem(position).name);
}
});
您的問題由您自己回答在您自己的問題上。嘗試複製/粘貼文本並正確使用答案機制。 – Pabluez 2011-12-23 00:04:10