2017-02-14 9 views
0

ペアリングされたBluetoothデバイスのリストを表示して、ユーザーに選択させたいと思います。私はラジオボタンで2行のリストビュー(フレンドリーなデバイス名の1行、MACアドレスの1行)を作成しようとしています。Android:ラジオボタン付き2行リストビューでアイテムを選択できません

私は私のプロジェクトに simple_list_item_2_single_choice.xmlをコピーして、次のコードで私のリストビューを作成している。この目的のために

:これは、リストが表示され

listView = new ListView(activity); 
listView.setItemsCanFocus(false); 
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE); 
ArrayAdapter<BluetoothDevice> listViewAdapter = new ArrayAdapter<BluetoothDevice>(activity, 
    R.layout.simple_list_item_2_single_choice, android.R.id.text1) { 
    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View view = super.getView(position, convertView, parent); 
     TextView text1 = (TextView) view.findViewById(android.R.id.text1); 
     TextView text2 = (TextView) view.findViewById(android.R.id.text2); 

     text1.setText(getItem(position).getName()); 
     text2.setText(getItem(position).getAddress()); 
     return view; 
    } 
}; 
BluetoothAdapter btAdapter = BluetoothAdapter.getDefaultAdapter(); 
Set<BluetoothDevice> devices = btAdapter.getBondedDevices(); 
// addAll() is not supported on APIs below 11 
for (BluetoothDevice device : devices) 
    listViewAdapter.add(device); 
listView.setAdapter(listViewAdapter); 

私がそれを望むように、私は(任意の項目を選択することはできませんアイテムをタップするとラジオボタンは空のままです)。何がありますか?

答えて

0

標準的なリストビューでは、ビューのルート項目にチェック可能なインターフェイスを実装する必要があります(レイアウトに非標準ロジックを使用する可能性があります)。それ以外の場合はちょうど答えで述べたよう

  • はsimple_list_item_2_single_choiceの私のコピーでトップレベルのビューを変更し、

    • のLinearLayout由来CheckableLayoutを作成:

      ので、this answerに基づいて、私は次のことをやりました.xmlをCheckableLayoutに設定します(これには完全修飾クラス名が必要です)。

    これらの変更により、意図したとおりに動作します。私はそれらをタップして項目を確認することができ、項目はラジオボタンのグループのように動作します。あなたが知っておくべきことを確認してください、しかし、ラジオボタンではない

  • 0

    イムは、これにチェックを設定することができます。

    radioButton.setChecked(true); 
    

    そして、あなたはラジオボタンを設定する必要がある場合は、ビューがクリックされたときにチェック、私はあなたが行うことができると思います以下のようなあなたのgetViewメソッドの何かに(「ラジオ」は、あなたのレイアウトに設定されたあなたのradioIdです):

    public View getView(int position, View convertView, ViewGroup parent) { 
        View view = super.getView(position, convertView, parent); 
        TextView text1 = (TextView) view.findViewById(android.R.id.text1); 
        TextView text2 = (TextView) view.findViewById(android.R.id.text2); 
        RadioButton rbutton = (RadioButton) view.findViewById(R.id.radio); 
        view.setOnClickListener(new View.OnClickListener() { 
        @Override 
         public void onClick(View v) { 
          rbutton.setChecked(true); 
         } 
        }); 
    
        text1.setText(getItem(position).getName()); 
        text2.setText(getItem(position).getAddress()); 
        return view; 
    } 
    

    作品なら、私に教えてください。

    関連する問題