Как проверить статус флажка внутри ListView на Android - PullRequest
0 голосов
/ 28 ноября 2011

Я получил в своем коде список с флажками, но как я могу проверить значение этого флажка? Я реализую программу с вкладками, и одна из вкладок имеет ListView с флажками, код выглядит следующим образом:

spec = tabHost.newTabSpec(OPTS_TAB_TAG).setIndicator("Options",
                  res.getDrawable(R.drawable.ic_tab_options))
              .setContent(new TabContentFactory() 
              {
                public View createTabContent(String arg0) 
                {

                        DbAdapter databaseManager = new DbAdapter(BusTrackerBetaActivity.this);
                        databaseManager.open();

                        List<String> BusLinesList = new ArrayList<String>();
                        BusLinesList = databaseManager.toStringList(databaseManager.getAllBusLines(), 1);

                        String[] BusLinesArray = BusLinesList.toArray(new String[BusLinesList.size()]);


                    databaseManager.close();

                    ListView ls1 = new ListView(BusTrackerBetaActivity.this); 
                    ArrayAdapter<String> adapter = new ArrayAdapter<String>(
                            BusTrackerBetaActivity.this, 
                         android.R.layout.simple_list_item_multiple_choice,
                         BusLinesArray);
                     ls1.setAdapter(adapter); 
                     ls1.setOnCreateContextMenuListener(BusTrackerBetaActivity.this); 

                     ls1.setItemsCanFocus(false);
                     ls1.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
                     return ls1;

                }

            });     

Он работает нормально, фактически я получил этот способ реализации списка из некоторых примеров, но мой вопрос: как я могу проверить значение (true или false) каждого флажка?

1 Ответ

1 голос
/ 28 ноября 2011

Вы можете использовать функцию ListView getCheckedItemPositions для этого. Он вернет объект SparseBooleanArray, содержащий проверенный статус каждого элемента в ListView. Просмотрите список SparseBooleanArray, чтобы определить, какие элементы проверяются.

Вам нужно будет где-то хранить ссылку на ваш ListView объект, чтобы вы могли легко получить к нему доступ позже, когда вам потребуется определить статус проверенного элемента.

    SparseBooleanArray checkedItems = ls1.getCheckedItemPositions();
    if (checkedItems != null)
        for (int i = 0; i < checkedItems.size(); i++)
        {
            if (checkedItems.valueAt(i))
            {
                String s = ls1.getAdapter().getItem(checkedItems.keyAt(i)).toString();
                //s contains your checked item, checkedItems.keyAt(i) is the index of the checked item
            }

        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...