0

お気に入りの連絡先を選択するために、リスト ビュー内のすべての連絡先を読み込み、以下のようにアダプターを宣言します。

ArrayAdapter<String> cnct_List_Adapter =new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_multiple_choice,info);

結果を表示するには、次のコードを使用します。

            try 
            {
                SparseBooleanArray a = LvPopupContacts.getCheckedItemPositions();
                String my_sel_items="";
                for(int i = 0; i < LvPopupContacts.getCount() ; i++)
                {
                    if (a.valueAt(i))
                    {
                     /*
                        Long val = lView.getAdapter().getItemId(a.keyAt(i));
                        Log.v("MyData", "index=" + val.toString()
                             + "item value="+lView.getAdapter().getItem(i));
                        list.add(lView.getAdapter().getItemId((a.keyAt(i))));
                     */

                        my_sel_items = my_sel_items + "," 
                            + (String) LvPopupContacts.getAdapter().getItem(i);
                    }
                }
                Toast.makeText(getActivity(),String.valueOf(a.size()), 0).show();
                Log.v("Contacts :" ,my_sel_items);
            } catch (Exception e) {
                   Log.v("e Error" ,e.toString());
            }

今、私がこれを使用するemulatorと動作しますが、代わりrightlyにテストするとDevicee Exception

Exception: java.lang.ArrayindexOutOfBoundsException length=13;index=13

覚えておいてください、私のデバイスには約220の接続があります。

4

1 に答える 1

1

あなたのバグはここにあります:

   for(int i = 0; i < LvPopupContacts.getCount() ; i++)

「a」配列にはチェックされたすべての項目が含まれていますが、すべての LvPopupContacts をループするため、次のように変更します

  for(int i = 0; i < a.size() ; i++)
于 2014-08-10T09:13:13.233 に答える