0

OnItemClick をリストビューに攻撃し、onItemClick() 内で、ラジオ ボタン、[キャンセル] および [選択] を含むダイアログを開きます。ダイアログ内で、選択したリストビュー項目の値を渡すことができるように、ある種の clickListener または itemSelectedListener が必要だと思います。

@Override
            public void onItemClick(AdapterView<?> parent, View view, int position,  long id) {
                if(position == 0) { 
                    CheckBox checkBox = (CheckBox) mRoot.findViewById(R.id.cbRowCheckBox);
                    checkBox.setChecked(!checkBox.isChecked());
                }
                if(position == 1) {

                    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity());
                    builder.setTitle(R.string.sync_frequency);

                    ListView listView = new ListView(getActivity());
                    listView.setOnItemClickListener(new OnItemClickListener());  <-----
                    String[] syncOptions = mSyncOptions;
                    ArrayAdapter<String> modeAdapter = new ArrayAdapter<String>(getActivity(), android.R.layout.select_dialog_singlechoice, android.R.id.text1, syncOptions);
                    builder.setSingleChoiceItems(modeAdapter, 0, null);
                    builder.setView(listView);
                    builder.setPositiveButton(R.string.sync_select,null);
                    builder.setNegativeButton(R.string.sync_cancel,null);
                    final Dialog dialog = builder.create();
                    dialog.show();
                }
            }
        });

しかし、タイプ AdapterView.OnItemClickListener をインスタンス化できないというエラーが表示されます。最適なルートは何ですか、またはこれを修正して、ユーザーが選択したラジオ ボタンをコードに知らせるにはどうすればよいですか? ありがとう!

4

2 に答える 2

0

AlertDialogs には、 setItems() メソッドを使用したリストのサポートが組み込まれています。独自のカスタム を作成する理由はありません。ListView

于 2013-07-11T16:17:05.713 に答える
0

私があなたを正しく理解しているなら、あなたは aがlistenerのときに a を使いたいと思っています。この使用のために、onCheckedChangeListenerRadioButtonchecked

2 番目のパラメーターを使用して、チェックされたidのを取得しRadioButton、そこから必要なことを行うことができます。

yourRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
{
    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) 
    { 
        if (checkedId == R.id.some_id)
        {
            // do something
        }

    });
于 2013-07-11T16:12:57.127 に答える