12

を追加した後、私はListViewmy_list.xml)が動作しませんが:リストビューonClickListener()のRadioButton

<ListView 
     android:id="@+id/my_list" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:choiceMode="singleChoice" 
     /> 

レイアウト各リスト項目のためである(list_item.xml):

Javaコードで
<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="horizontal" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="10dp" 
    > 

    <ImageView 
      android:id = "@+id/my_icon" 
      android:layout_width ="wrap_content" 
      android:layout_height ="wrap_content" 
      android:layout_centerVertical="true" 
    /> 
    <TextView 
     android:id="@+id/my_str" 
     android:layout_width="wrap_content" 
     android:layout_height = "wrap_content" 
     android:layout_toRightOf="@id/my_icon" 
    /> 

    <!--This radio button makes the list item unselectable, why?--> 
    <RadioButton 
     android:id="@+id/my_radio_btn" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_centerVertical="true" 
     android:layout_alignParentRight="true" 
     /> 
</RelativeLayout> 

、私はリストのためSimpleAdapterを使用します。

my_list = (ListView) findViewById(R.id.my_list); 

SimpleAdapter adapter = new SimpleAdapter(context, getOptions(), 
      R.layout.list_item, 
      new String[] { "icon1","str1" }, 
      new int[] {R.id.my_icon, R.id.my_str }); 

my_list.setAdapter(adapter); 

//onClickListener does not work after I added RadioButton in list item layout 
my_list.setOnItemClickListener(new AdapterView.OnItemClickListener() { 

     @Override 
     public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      Log.v("SELECTED", position+""); 
     } 
    }); 

上記のコードでは、リストアイテムのレイアウトでRadioButtonを追加しましたが、このボタンを追加した後、私のリストonClickListenerはもう動作しません。

android:focusable="false" 
android:focusableInTouchMode="false" 

とあなたOnItemClickListenerに、あなたはラジオボタンのをチェックし設定する必要があります:あなたののRadioButtonに次のプロパティを設定します(これはリスト項目のレイアウトにRadioButtonなしだ場合、それは動作します)

+1

あなたのリストビューの項目と、その項目 – waqaslam

+0

内部のラジオボタンの間に**フォーカスを獲得する今、その競合**ので、この問題を取り除くために次に、どのように?リストアイテムにラジオボタンが必要です。ユーザーがアイテムエリアをクリックしたときにラジオボタンを選択する必要があります。 –

+0

クリックリスナーは、フォーカス可能な他のビューがない場合にのみ機能します。 CheckBoxをfocusable = "false"に設定すると、あなたのトリックを行うはずです。http://stackoverflow.com/questions/1121192/android-custom-listview-unable-to-click-on-items –

答えて

24

コードでフラグを立てる。


あなたは以下のようにリストビューセット:

<ListView 
    android:id="@+id/my_list" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" /> 
+0

はい、今すぐです。しかし、ユーザーがアイテム領域をクリックしたときにラジオボタンを選択する方法はありますか? –

+0

私の更新された回答を参照してください...実際には、アイテムをクリックしたときにラジオボタンをチェックするために、OnItemClickListenerのコードでこれを処理する必要があります。 – waqaslam

+0

はい、ラジオを作る方法も提案できますかリストのボタンを1つの選択肢にするには?現在、リストの選択モードを1つに設定していますが、現在、リストアイテムをクリックするたびにラジオボタンがコードで「チェック」に設定され、リストが複数選択可能になります。 –

2

あなたのRadioButtonのXMLコードにこのコードを追加します。この問題を解決するための

android:focusable="false" 
android:focusableInTouchMode="false" 

もう一つのキーワードがTouchDelegateです。

編集:

https://stackoverflow.com/a/5528945/1285331

+0

これは私にとって完璧に機能しました。 +1 – prolink007

関連する問題