문제

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.

도움이 되었습니까?

해결책

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.

다른 팁

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
        } 
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top