2014-03-28 44 views
0

編輯1:已解決!!!!編輯2回答'listView`用`checkBox`,只允許2「選中」選項,擋住了其他的

我改變了代碼,並與single_row.xml一個定製listView。 我得到了一些工作,但我thik我的邏輯搞砸了。 目標仍然相同,只允許2個「檢查」,並且一旦2個「檢查」爲true就阻止其他可能性。但也要改變所做的「檢查」。

e.g: 階段1

  • [X] - 1;
  • [X] - 2;
  • [] - 3(封端點擊)

相2

  • [X] - 1;
  • [] - 2;
  • [] - 3;

相3

  • [X] - 1;
  • [] - 2; (阻止點擊)
  • [X] - 3;

這是否有任何意義?

這是我對checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener(){

  @Override 
      public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { // TODO Auto-generated method stub 
              // if 
       if (isChecked) 
        incr++; 
       if (!isChecked) 
        incr--; 
       if (incr > 2){ 
        Toast.makeText(context, "Somente 2 ", 
          Toast.LENGTH_LONG).show(); 

         buttonView.setEnabled(false); 
       } 

      } 
     }); 

EDIT 2 ---->THE FIX代碼:

在這裏看到了答案:How to limit number of checkboxes that can be checked?

和我代碼:

checkBox.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

@Override

public void onCheckedChanged(CompoundButton buttonView, 
        boolean isChecked) { 
       if (isChecked && incr >= 2) { 
        checkBox.setChecked(false); 
        Toast.makeText(context, "Somente 2 ", Toast.LENGTH_LONG) 
          .show(); 
       } else { 
        // the checkbox either got unchecked 
        // or there are less than 2 other checkboxes checked 
        // change your counter accordingly 
        if (isChecked) { 
         incr++; 
        } else { 
         incr--; 
        } 

        // now everything is fine and you can do whatever 
        // checking the checkbox should do here 
       } 
      } 
     }); 

回答

0

創建一個整數變種INCR調用它,並且它increament每選擇(在列表視圖聽者),並且如果該值超過兩個以上,然後停止並吐司顯示信息,這將是一個容易和棘手的方法。

+0

但我已經有了int'cont = listV.getCheckedItemCount();'對於檢查的項目...或者不是那樣工作? – GuilhermeM

+0

您需要在onItemClick偵聽器之前增加onItemClick偵聽器和Check Condition內的cont值,並將cont變量聲明爲全局變量。 –

+0

嗡嗡聲...爲什麼增加'onItemClickListener()''cont'?不能像我一樣在'onItemClick'上? 並檢查條件?我怎麼做? 謝謝,並對所有的麻煩抱歉:/ – GuilhermeM

0

這不是確切的答案,但可以幫助你。 xml文件 <RadioGroup android:id="@+id/types"> <RadioButton android:id="@+id/take_out" android:text="Take-Out" android:checked="true" /> <RadioButton android:id="@+id/sit_down" android:text="Sit-Down" /> <RadioButton android:id="@+id/delivery" android:text="Delivery" /> </RadioGroup>

的java文件

RadioGroup types=(RadioGroup)findViewById(R.id.types); 

    switch (types.getCheckedRadioButtonId()) { 
    case R.id.sit_down: 
     r.setType("sit_down"); 
     break; 

    case R.id.take_out: 
     r.setType("take_out"); 
     break; 

    case R.id.delivery: 
     r.setType("delivery"); 
     break;` 

follow this official site

+0

感謝您的迴應!我會試試看併發布新聞:) – GuilhermeM

+0

嘿!對不起,遲到的迴應,但被其他事情趕上了。我改變了我的代碼(現在會更新)並創建了一個自定義的'listview'來有複選框。我既不使用'radioButtons'也不使用多選。有任何想法嗎? – GuilhermeM

+0

剛剛編輯它...任何想法? – GuilhermeM