2010-08-05 42 views
7

我正在寫一個音樂播放器,使用擴展BaseAdapter的自定義適配器(效率適配器),我想要使用setAdapter()AlertDialog中顯示,其中用戶可以點擊其中一首歌曲切換到播放列表中的該位置,或者選中要從播放列表中刪除的歌曲。我嘗試使用自定義點擊偵聽器,以便用戶可以長按一下以從列表中刪除項目,但listview只是不能正常工作......它刪除了錯誤的項目(最後的那些),即使ArrayList包含正確的播放列表項目...(當我從ArrayList中刪除該項目時,我將它傳遞給了名爲notifyDataSetChanged的適配器...但是,這只是不起作用,因爲我提到了這個。AlertDialog ListView ...因爲沒有理由從最後彈出結果而不是正確的項目如何將setMultiChoiceItems()與使用效率arrayadapter的Custom AlertDialog一起使用?

所以...我想嘗試的下一個方法是使用AlertDialogsetMultiChoiceItems()方法...但它似乎不適用於自定義適配器......只有簡單的陣列我必須繼承AlertDialogOverridesetMultiChoiceItems()方法,或者有什麼辦法可以使它與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);       
    } 

}); 
+0

您的問題由您自己回答在您自己的問題上。嘗試複製/粘貼文本並正確使用答案機制。 – Pabluez 2011-12-23 00:04:10

回答

3

參考ThisThis

然後 傳遞引用爲byte []在setMultiChoiceItems().

final boolean[] booleans = {false, true, false, true, false, false, false}; 

然後檢查內部setPositiveButton().

booleans值。如果你需要傳遞這個AlertDialog左右,然後延伸AlertDialog並且已經創建了一個字段布爾值,如1所述。

相關問題