Android: проблема с флажком? - PullRequest
2 голосов
/ 24 августа 2011

Я пытаюсь установить все флажки в списке.Почему конкретный флажок только верно.Код: -

            ListView listview = (ListView)findViewById(R.id.listview1);
        for(int i=0; i < listview.getChildCount(); i++)
        {
            AbsoluteLayout itemLayout = (AbsoluteLayout)listview.getChildAt(i);
            CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.checkBox1);
            if(cb.isChecked())
            {
                cb.setChecked(false);
            }
            else
            {
                cb.setChecked(true);
            }
        }

Заранее спасибо.

Ответы [ 3 ]

3 голосов
/ 24 августа 2011

Не уверен, что полностью понимаю вопрос ..

Но я верю:

CheckBox cb = (CheckBox)itemLayout.findViewById(R.id.checkBox1);

всегда будет возвращать один и тот же CheckBox (с идентификатором checkBox1), даже если в вашем списке несколько флажков.

2 голосов
/ 24 августа 2011

Попробуйте:

   for(int i=0; i < listview.getChildCount(); i++)
        {
            CheckBox cb = (CheckBox)listview.getChildAt(i).findViewById(R.id.checkBox1);  //if the child views are properly populated in each row item then on this particular positon ChBox will be found and instantiated
            if(cb.isChecked())
            {
                cb.setChecked(false);
            }
            else
            {
                cb.setChecked(true);
            }
        }
1 голос
/ 20 сентября 2011

Вы можете использовать это с двумя кнопками, такими как selectall & unselectall

    public void checkallbtn_Click(View view)
{
    ListView lv = (ListView)findViewById(R.id.backuplist);
    CheckBox cb;
    try
    {
        for(int i=0;i<lv.getCount();i++)
        {
            cb = (CheckBox)lv.getChildAt(i).findViewById(R.id.checkBox1);
            if(!cb.isChecked())
            {
                cb.setChecked(true);
            }
        }

    }catch(Exception e) {e.printStackTrace();}
}
public void uncheckallbtn_Click(View view)
{
    ListView lv = (ListView)findViewById(R.id.backuplist);
    try
    {
        for(int i=0;i<lv.getCount();i++)
        {
            CheckBox cb = (CheckBox)lv.getChildAt(i).findViewById(R.id.checkBox1);
            if(cb.isChecked())
            {
                cb.setChecked(false);
            }
        }           
    }catch(Exception e) 
    {
        e.printStackTrace();
    }
}

Надеюсь, это поможет вам.

...