2015-02-13 2 views
0

У меня есть цикл for, который отображает 2 текстовых поля и флажок в каждом из моих tablerow в макете таблицы. У меня есть оператор if, который показывает тост для проверки функции isChecked флажка, но оператор if работает обратно, за исключением последней строки таблицы. Почему это и как я могу это исправить?Флажки в выражении if внутри цикла for работают в обратном порядке

for (Integer j = 0; j < count; j++) 
     { 

      tableRow1 = new TableRow(getApplicationContext()); 
      textViewMaster = new TextView(getApplicationContext()); 
      textViewMaster.setText(c.getString(c.getColumnIndex("StudentID"))); 
      textViewMaster.setPadding(20, 20, 20, 20); 
      textViewMaster.setTextColor(getResources().getColor(R.color.redactionbar)); 
      textViewMaster.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25); 
      textViewMaster.setTypeface(null, Typeface.BOLD); 
      tableRow1.addView(textViewMaster); 

      textViewMaster2 = new TextView(getApplicationContext()); 
      textViewMaster2.setText(c.getString(c.getColumnIndex("LastName"))); 
      textViewMaster2.setPadding(20, 20, 20, 20); 
      textViewMaster2.setTextColor(getResources().getColor(R.color.redactionbar)); 
      textViewMaster2.setTextSize(TypedValue.COMPLEX_UNIT_DIP,25); 
      textViewMaster2.setTypeface(null, Typeface.BOLD); 
      tableRow1.addView(textViewMaster2); 

      tableRow1.setClickable(true); 
      tableRow1.setLongClickable(true); 
      tableLayout1.setClickable(true); 


      checkBox = new CheckBox(getApplicationContext()); 
      checkBox.setChecked(true); 

      checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
      { 
       @Override 
       public void onCheckedChanged(CompoundButton compoundButton, boolean b) 
       { 
        if (checkBox.isChecked()) 
        { 
         searchView.setEnabled(false); 
         arrayList.add(container1); 
         arrayList2.add(container2); 
         arrayList3.add(container3); 
         Toast toast = Toast.makeText(getApplicationContext(),"Its checked", Toast.LENGTH_SHORT); 
         toast.show(); 

        } 

        else 
        { 
         arrayList.remove(container1); 
         arrayList2.remove(container2); 
         arrayList3.remove(container3); 
         Toast toast = Toast.makeText(getApplicationContext(), "Its not checked", Toast.LENGTH_SHORT); 
         toast.show(); 
        } 
       } 
      }); 

      checkBox.setVisibility(View.VISIBLE); 
      tableRow1.addView(checkBox); 
      tableLayout1.addView(tableRow1); 

      c.moveToNext() ; 
     } 

Любая помощь очень ценится!

+0

Где находится «c.moveToNext();» Ссылаться на? –

+0

Это курсор, который объявляет необработанный запрос базы данных. – Kreyah

ответ

1

В текущей реализации checkBox трюме последнего объекта CheckBox, который создается во время последней итерации for loop так использовать второй параметр onCheckedChanged метода, который, если true означает флажок в противном случае бесконтрольно:

@Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) 
    { 
    if (b){ // or use compoundButton.isChecked() 
     // code if checkbox is checked  
    } else{ 
     // code if checkbox is not checked 
     } 
} 
+0

Я забыл, что параметр b является параметром, необходимым для оператора if. Оно работает! Спасибо! – Kreyah

0

Вы должны использовать предложение в другой ответ, но это также сработает и будет использоваться для использования, если у вас нет параметра, который вы можете использовать:

Создайте новую локальную переменную, а не поле, так что для каждого цикла будет разным, а знак равен final, чтобы использовать его из анонимного класса.

final CheckBox checkBox = new CheckBox(getApplicationContext()); 

//rest is same 
checkBox.setChecked(true); 

checkBox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton compoundButton, boolean b) 
    { 
     if (checkBox.isChecked()) 
     { 
     } 
     else 
     { 
     } 
    } 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^