2012-09-07 4 views
0

У меня есть listview, который содержит checkedtextview. Мое приложение перемещается из верхней части списка вниз. Я хочу проверить, проверен ли элемент перед вызовом. Если он не установлен, я хочу перейти к следующему элементу в списке.Android CheckedTextView

Э.Г.

Пункт 1 - Проверено

пункт 2 - Проверено

Пункт 3 - не проверено

Пункт 4 - Проверено

Итак, я хочу, чтобы приложение, чтобы обработать следующим образом:

Пункт 1

Позиция 2

Пункт 4.

Я не уверен, как получить доступ проверенного статуса пункта из listview позиции.

Логика, что я хочу, это выглядит следующим образом:

Is Current Item checked? 
Yes: 
Call action 
No: 
Move to next item. 
Reloop to top of void. 

мне нужно будет что-то там, чтобы остановить бесконечный цикл.

ответ

0

Одним из решений будет использование ArrayList позиций. Когда пользователь проверит/снимет отметку checkbox, добавьте/удалите соответствующую позицию в ArrayList. Затем, когда пользователь закончен, просто перейдите по списку, чтобы узнать, какая позиция была выбрана.

+0

Так, в onclicklistener, создать список массива проверяемых позиций элементов? Затем проверьте текущую позицию позиции на этот список. Если он в нем, идите вперед и действуйте? Если это не так, как это сделать? –

+0

Этот вопрос задан очень часто, см. Здесь более подробную информацию http://stackoverflow.com/a/2408987/1635817 – florianmski

2

1.) Сначала создайте массив, то, что указывает на то, что элементы проверили состояние в адаптере

(если вы продлить BaseAdapter класс для этой цели):

private boolean [] itemsChecked = new boolean [getCount()]; 

2.) Затем создать OnCheckedChangeListener:

private OnCheckedChangeListener listener = new OnCheckedChangeListener() 
{ 
    @Override 
    public void onCheckedChanged(CompoundButton button, boolean checked) 
    { 
     Integer index = (Integer)button.getTag(); 
     itemsChecked[index] = checked; 
    } 
} 

3.) В адаптерах getView() метод:

public View getView(int index, View view, ViewGroup parent) 
{ 
    /*...*/ 
    CheckBox checkBox = /*get the checkbox*/; 
    checkbox.setTag(index); 
    checkBox.setOnCheckedChangeListener(listener); 
    /*...*/ 
} 

4.) В методе onClick():

public void onClick(View view) 
{ 
    //just get the boolean array somehow 
    boolean [] itemsChecked = adapter.getItemsCheckedArray(); 

    for(int i=0; i<itemsChecked.length; i++) 
    { 
     if(itemsChecked[i]) 
     { 
      //the i th item was checked 
     } 
     else 
     { 
       //it isnt checked 
     } 
    } 
}