У меня есть ListView, который имеет 649 записей.Каждое представление в списке имеет два LinearLayouts, ImageView, несколько TextViews и CheckBox.В настоящее время у меня есть код, чтобы пройти все флажки и подсчитать их, и еще код, чтобы выяснить, какие из них проверены, чтобы я мог их использовать.Однако всякий раз, когда я проверяю один из CheckBox, каждый седьмой CheckBox выше и ниже волшебным образом также проверяется.Метод подсчета отмеченных флажков возвращает число, которое я на самом деле проверял, но метод для получения индексов всех отмеченных флажков просто возвращает первый проверенный x, независимо от того, проверял ли я их или те, которые удалены от них.Например, если я проверяю число 21, метод возвращает индекс 3. Я включил некоторые соответствующие сегменты кода: Код макета для каждого представления в списке:
<?xml version="1.0" encoding="utf-8"?>
<TextView
android:id="@+id/id"
android:layout_width="50dp"
android:layout_height="50dp"
android:textSize="20sp"/>
<LinearLayout
android:layout_width="180dp"
android:layout_height="50dp"
android:orientation="vertical">
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:id="@+id/name"/>
<TextView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:textColor="#777777"
android:id="@+id/type"/>
</LinearLayout>
<CheckBox
android:layout_gravity="right|center_horizontal"
android:id="@+id/check"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:focusable="false"
android:focusableInTouchMode="false"/>
Проверьте метод подсчета:
public int[] whichAreChecked() //TODO: this should work.
{
int listItemCount = ChooserList.getChildCount();
ArrayList<Integer> ints=new ArrayList<Integer>();
for(int i=0; i<listItemCount; i++)
{
CheckBox cbox = (CheckBox) ((View)ChooserList.getChildAt(i)).findViewById(R.id.check);
if(cbox.isChecked())
ints.add(i);
}
Log.e("durr", ""+ints.size());
int[] result=new int[ints.size()];
for(int i=0; i<result.length; i++)
result[i]=ints.get(i);
return result;
}
Проверьте метод подсчета:
public int countChecks()
{
int checked=0;
int listItemCount = ChooserList.getChildCount();
for(int i=0; i<listItemCount; i++)
{
CheckBox cbox = (CheckBox) ((View)ChooserList.getChildAt(i)).findViewById(R.id.check);
if(cbox.isChecked())
checked++;
}
Log.e("countChecks()", ""+checked);
return checked;
}
Если я могу добавить дополнительную информацию, пожалуйста, спросите!