Question

I have a listview that contains a checkedtextview. My app moves from the top of the list view to the bottom. I want to check if the item is checked before calling an action. If it is not checked I want to move to the next item in the list.

E.g.

Item 1 - Checked

item 2 - Checked

Item 3 - Not Checked

Item 4 - Checked

So, I want the app to process as follows:

Item 1

Item 2

Item 4.

I am not sure how to access the checked status of the item from the listview position.

The logic that I want is as follows:

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

I will need something in there to stop an infinite loop.

Was it helpful?

Solution

One solution will be to use an ArrayList of positions. When the user check/uncheck a checkbox, add/remove accordingly the position in your ArrayList. Then when the user is over, just iterate through the list to know which position have been selected.

OTHER TIPS

1.) First create an array, what indicates the items checked state in your adapter

(assuming you extend the BaseAdapter class for this purpose):

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

2.) Then create an OnCheckedChangeListener:

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

3.) In your adapters getView() method:

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

4.) In the onClick() method:

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
        } 
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top