0

simple_multiple_listitem ビューであるいくつかのチェックボックスを備えたリストビューがあります。これは、リストビューを初期化する方法です

listView.setAdapter(new ArrayAdapter<String>(
                            getApplicationContext(),
                            android.R.layout.simple_list_item_multiple_choice,
                            subcatNamesList));

リストの読み込み時に、選択したチェックボックスをいくつか表示する必要があります。以下のコードを使用してこれを行いました

for (int i = 0; i < subCatArrayLlist.size(); i++) {

                        for (int j = 0; j < selectedItemsList.size(); j++) {
                            if (subCatArrayLlist.get(i).getSubCatSrNo()
                                    .contains(selectedItemsList.get(j))) {
                                listView.setItemChecked(i, true);
                            }


                        }

また、リストを読み込んだ後に選択または選択解除したときにチェックボックスの状態を取得する必要があります。ジェリービーンズで完全に機能するコードをいくつか記述します[チェックボックスを選択すると、選択解除時にtrueとfalseが返されることを意味します]。しかし、ICSでは、なぜこれが起こっているのか、私の問題を調べてください。私は本当にこの部分で立ち往生しています。以下は、選択と選択解除に使用している mcode です。

listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> arg0, View arg1,
                                int pos, long arg3) {
                            System.out.println("Get item at position= "
                                    + listView.getChildAt(pos));

                            // selectedItemsList.add(subCatArrayLlist.get(pos)
                            // .getSubCatSrNo());

                            CheckedTextView ctv = (CheckedTextView) arg1
                                    .findViewById(android.R.id.text1);

                            System.out.println("State of check Box= "
                                    + ctv.isChecked());


                            if (ctv.isChecked() == true) {
                                selectedItemsList.add(subCatArrayLlist.get(pos)
                                        .getSubCatSrNo());
                                Toast.makeText(context, "Cat Selected",
                                        Toast.LENGTH_LONG).show();
                            }
                            if (ctv.isChecked() == false) {
                                selectedItemsList.remove(subCatArrayLlist.get(
                                        pos).getSubCatSrNo());

                                Toast.makeText(context, "Cat DeSelected",
                                        Toast.LENGTH_LONG).show();
                            }
                        }
                    });
4

1 に答える 1

0

ICS でこれを確認していませんが、アクティビティに onCheckChange を実装できます。これにより、アダプタを使用してアイテムを取得してリストを編集する必要がなくなります。サンプルコード:

@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

        int pos = mMainListView.getPositionForView(buttonView);

        if (pos != ListView.INVALID_POSITION) {
            String item = mAllItems.get(pos);        

            if (isChecked) {
                mSelectedItems.add(item);
            } else {
                mSelectedItems.remove(item);
            }
        }
}
于 2013-10-12T10:49:43.687 に答える