2015-08-21 61 views
0

我有一個動態添加兩個textView和一個複選框的行。我的問題是,我只希望用戶可以檢查一個,其他人必須取消選中。如果用戶推入另一個複選框,則啓用該選項並禁用所有其他複選框。我測試了一些東西,但沒有得到我想要的功能。如何在動態視圖中只選擇一個複選框

我無法從複選框,單選按鈕更改配置,我必須使用我使用的方法:

private selected_position = -1; 

protected void addGreetingToListView(final GreetingListJson greetings) { 
     View row = inflater.inflate(R.layout.main_greetings_settings_row, greetingListView, false); 
     row.setTag(greetings); 

     playButton = (ToggleButton) row.findViewById(R.id.detail_play_greeting);    
     TextView greetingName = (TextView)row.findViewById(R.id.greetingTitle); 
     greetingName.setDuplicateParentStateEnabled(true); 
     TextView greetingDescription = (TextView)row.findViewById(R.id.greetingDescription); 
     greetingDescription.setDuplicateParentStateEnabled(true); 

     checkBox = (CheckBox) row.findViewById(R.id.checkBox_greeting_list); 
     checkBox.setTag(greetings); 


     checkBox.setOnClickListener(new View.OnClickListener(){ 

      @Override 
      public void onClick (View view) { 

       if (((CheckBox) view).isChecked()) 
       { 
        selected_position= greetingListView.getChildCount(); 
       } 
       else 
       { 
        selected_position=-1; 
       }   
      } 

     }); 


       greetingName.setText(greetings.Name); 
       greetingDescription.setText(greetings.Description); 


      row.setOnClickListener(this); 
      row.setOnLongClickListener(this); 
      row.setFocusable(true); 


      greetingListView.addView(row); 

    } 

複選框的XML:

<CheckBox 
     android:id="@+id/checkBox_greeting_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentRight="true" 
     android:layout_marginRight="15dp" 
     android:layout_centerVertical="true"/> 
+0

也許使用單選按鈕? –

+0

可以生成多少個動態行(粗略數字)...? – chandil03

+0

我無法使用單選按鈕,無限行。 –

回答

4

首先,在類中聲明ArrayList:在addGreetingToListView

ArrayList<CheckBox> mCheckBoxes = new ArrayList<CheckBox>(); 

然後每天添加新的C heckbox到mCheckBoxes並修改複選框的點擊監聽器:

checkBox.setTag(greetings); 

mCheckBoxes.add(checkBox); 
checkBox.setOnClickListener(new View.OnClickListener(){ 

     @Override 
     public void onClick (View view) { 

      if (((CheckBox) view).isChecked()) 
      { 
       for (int i = 0; i < mCheckBoxes.size(); i++) { 
        if (mCheckBoxes.get(i) == view) 
         selected_position = i; 
        else 
         mCheckBoxes.get(i).setChecked(false); 
       } 

      } 
      else 
      { 
       selected_position=-1; 
      }   
     } 

    }); 
+0

使用此代碼我現在不能選擇任何行,您單擊複選框但不啓用...只有最後一行,我可以檢查 –

+0

我沒有得到「您單擊複選框但不啓用」。你什麼意思? – shhp

+0

我的意思是,當我按下複選框時,不會顯示勾號啓用。例如,目前,我有六個複選框,使用此代碼,前五個我永遠不能選擇它,只有最後一個可能。 –

相關問題