2011-12-07 37 views
2

我有一個列表視圖與幾個ToggleButton項目。當我點擊一個,另一個打開/關閉。但是,它執行與右側ListView項目相關的操作。listView項上的多個ToggleButton。當點擊一個,其他人被打開/關閉

他們是在自定義適配器管理,我在這裏是我的代碼:

public class AdapterContacts extends BaseAdapter implements OnClickListener { 

ToggleButton btnIsSending; 
    . 
    . 
    . 

    public View getView(int position, View convertView, ViewGroup viewGroup) { 
    Contact entry = contactsList.get(position); 
    if (convertView == null) { 
     LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
     convertView = inflater.inflate(R.layout.contact_row, null); 
    } 
    . 
    . 
    . 
    // isSending button 
    btnIsSending = (ToggleButton) convertView.findViewById(R.id.btnIsSending); 
    btnIsSending.setFocusableInTouchMode(false); 
    btnIsSending.setFocusable(false); 
    btnIsSending.setOnClickListener(this); 
    btnIsSending.setTag(entry); 

    return convertView; 
} 

    public void onClick(View view) { 
    final Contact entry = (Contact) view.getTag(); 
    Log.d(TAG, "entry " + entry.getPhoneNr()); 

    LookalizeData lookData = (LookalizeApp.getContext()).lookalizeData; 
    // Toggle send button 
    if(view.getId() == btnIsSending.getId()){ 
     if(btnIsSending.isChecked()) 
      ... 
     else 
        ... 
     }  

還有其他按鈕和他們很好地工作。

任何想法或經驗分享?

回答

3

在你getView你必須是這樣的(這個代碼是給你一個想法將如何工作你的情況):

ListView lv = ((ListActivity)context).getListView(); 
// Containing all check states 
SparseBooleanArray sba = lv.getCheckedItemPositions(); 

btnIsSending = (ToggleButton) convertView.findViewById(R.id.btnIsSending); 
btnIsSending.setFocusableInTouchMode(false); 
btnIsSending.setFocusable(false); 
btnIsSending.setTag(entry); 

btnIsSending.setChecked(false); 

// Cursor is passed as an argument. 
if(sba != null) 
    if(sba.get(cursor.getPosition())) 
    btnIsSending.setChecked(true); 

認爲這需要在活動方面的內容。

您已通過android:choiceMode在xml或使用setChoiceMode使ListView成爲多選模式。

您必須在按鈕上移除您的onClick監聽器。無論您在按鈕的onClick中做什麼,都必須將該邏輯添加到ListActivtiyonListItemClick

+0

感謝您的回答。我真的不知道這個代碼,也不知道如何使用sparseBooleanArray。我會試試這個。作爲臨時修復,我已經設置了一個獨立的onClickListener作爲我的切換按鈕。 – znat

+0

我知道它的棘手... – havexz

相關問題