2015-08-04 9 views
0

У меня есть список флажков с адаптером. Когда пользователь нажимает на все флажки в списке, появляется предупреждение «all cheked». Все работает нормально, когда пользователь нажимает на строки, но если он нажмет на флажок, он изменит статус (флажок), но не выполнит метод - onItemClick. Иногда некоторые предметы срабатывают, но я не могу найти отношения. Когда я нажимаю на checkbox chekedValue, не меняюсь. В этой ситуации пользователь может обмануть приложение :-). Мой код:Android checkbox list - check uncheck не работает должным образом

@Override 
public void onItemClick(AdapterView<?> arg0, View v, int position,long arg3) { 
    // TODO Auto-generated method stub 
    CheckBox cb = (CheckBox) v.findViewById(R.id.checkBox1); 
    TextView tv = (TextView) v.findViewById(R.id.textView1); 

    cb.performClick(); 
    if (cb.isChecked()) { 
     Log.v("Cheked clik OK ",""); 
     checkedValue.add(tv.getText().toString()); 
     // tv.setBackgroundResource(R.drawable.linia_przekreslenie); 
     checkAllMarks(); 
    } else if (!cb.isChecked()) { 
     Log.v("Cheked clik uncheck ",""); 
     checkedValue.remove(tv.getText().toString()); 
     // tv.setBackgroundColor(Color.argb(0, 0, 0, 0)); 

    } 


} 

private void checkAllMarks() { 

    int sizeCheckedValue = checkedValue.size(); 
    int sizePackageList1 = packageList1.size(); 
    Log.v("chekedvalue " + Integer.toString(sizeCheckedValue), "Package " + sizePackageList1); 
    Log.v("chekedValue1 " +checkedValue, " "); 

    if (sizeCheckedValue == sizePackageList1) { 
     AlertDialog.Builder alert = new AlertDialog.Builder(this); 
     alert.setTitle(R.string.ready_to_go); 

     alert.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialog, int which) { 


      } 
     }); 


     alert.show(); 
    } 
} 

.....My list_item.xml 
<CheckBox 
    android:id="@+id/checkBox1" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:layout_alignBaseline="@+id/textView1" 
    android:layout_alignBottom="@+id/textView1" 
    android:layout_alignParentRight="true" 
    android:layout_marginRight="16dp" 
    android:focusable="false" 
    android:clickable="false" 
    android:focusableInTouchMode="false" /> 

ответ

0

Ну Проблема в том, что при нажатии на строку ListView, то onItemClick событие вызывается, но при нажатии на флажок только событие флажок называется не onItemclik, поэтому нужная операция не выполняется.

что вы можете сделать, это иметь CheckedChangeListener в вашем классе адаптера и там вы пишете свою логику.

Для справки ниже ссылка содержит код, который изменяет состояние флажка, когда вы нажимаете на него.

http://www.androprogrammer.com/2013/10/list-view-with-check-box-using-custom.html

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