0

listview 含む があり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.

無限ループを止めるには、そこに何かが必要です。

4

2 に答える 2

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
        } 
    }
}
于 2012-09-07T21:55:30.610 に答える
0

ArrayList1 つの解決策は、 of ポジションを使用することです。ユーザーが をチェック/チェックcheckbox解除すると、それに応じて の位置を追加/削除しますArrayList。次に、ユーザーが終了したら、リストを繰り返し処理して、どの位置が選択されたかを確認します。

于 2012-09-07T20:51:44.993 に答える