2016-03-28 15 views
0

'un dışına çıktı kontrol ettim İlk seçilen öğe için belirli temel değerlere sahip onay kutularının oluşturulmasını ve ardından değerinin değiştirilmesi gereken bir uygulama yapıyorum. Orada çok karmaşık bir şey yok.Android RadioGroup, bağlı olan

Sorunum düzeni sıfırladığımda yeni RadioButtons'lu yeni bir RadioGroup ve RadioGroup için yeni bir OnCheckedChangeListener oluşturuyorum. Ancak, kullanıcı arayüzünü sıfırladıktan sonra bir onay kutusunu tıkladığımda, dinleyiciden gelen checkId, RadioGroup'umun sınırından çok büyük bir şey çıkarır.

İşte kodum. Sıfırlama bölümünü göstermeyeceğim ama esas olarak removeAllViews() öğesini çağırıyorum ve sonra düzeni tekrar oluşturuyorum.

final RadioGroup optGroup = new RadioGroup(getActivity()); 
optGroup.setOrientation(LinearLayout.HORIZONTAL); 
for(int itemNo = 0; itemNo < cell.getList().countItems(); itemNo++){ 
    RadioButton rButton = new RadioButton(getActivity()); 
    rButton.setText(cell.getList().getItem(itemNo).getLabel()); 
    optGroup.addView(rButton); 
    if(cell.getSelectedListItem().getLabel().equals(cell.getList().getItem(itemNo).getLabel())){ 
     optGroup.check(itemNo+1); 
    } 
} 
optGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { 
    @Override 
    public void onCheckedChanged(RadioGroup group, int checkedId) { 
     cell.selectListItem(String.valueOf(checkedId)); 
    } 
}); 
linearLayout.addView(optGroup); 

, 1 ila 3 arasında (I 3 onay kutuları) ve sıfırlama işleminden sonra çıkış aralığı, bu 4 6.

EDIT'e değişmektedir UI sıfırlama önce, benim giriş log

İlk kontrol sadece ilk kez de geçerlidir, örneğin görüntülenen 3'ün aralığı ikinci kez 4'den 6'ya kadar.

Teşekkürler!

+0

İkinci seferde cell.getList(). CountItems() değeri nedir? (sıfırladıktan sonra). Belki de liste temizlenmez ve sadece değerleri kopyalarsınız. –

+0

Liste hala aynı. Aslında, üretmem gereken UI, farklı tip ve her şeyle bir değerler tablosundan gelir. Böylece liste hücreye kaydedilir ve değişebilen tek hücre değeri selectedItem'dir. Gerisi aynı kalır. Bu kodun tüm olası tablolar için çalışmasına izin vermeliyim. – dequec64

+1

Sanırım sorun, kimliği belirlememeniz. rButton.setId gibi (itemNo); Ama dikkatli olun, itemNo 1'de (0 değil) başlamalıdır. Bunu deneyin –

cevap

1

Sen radioButton kimliği

rButton.setId(itemNo); 

set Ama Id olarak 0 kullanmamaya emin olmalısınız. Her RadioButton Kimliği benzersiz olması gerektiğinden, işletim sisteminin ilk çalıştırma için otomatik olarak oluşturulmuş Ids (1-3) kullanıldığını izlediğini tahmin ediyorum. Daha sonra sıfırladıktan sonra, 4-6 ile devam eder (3'den başlayarak devam eder)

İlgili konular