12

後不工作,我有一個ListViewmy_list.xml):的ListView onClickListener()將單選

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

每個列表項的佈局(list_item.xml):

<?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> 

在Java代碼中,我使用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不再工作了,爲什麼? (它的工作原理,如果它不RadioButton列表項的佈局)

+1

因爲現在它的一個獲得該項目 – waqaslam 2012-03-27 08:30:23

+0

裏面你ListView的項和單選按鈕之間** **焦點衝突,那麼如何才能擺脫這個問題的?我需要列表項目上的單選按鈕,並且我需要在用戶單擊項目區域時選擇單選按鈕。 – 2012-03-27 08:30:52

+0

只有在沒有其他視圖可以焦點的情況下,點擊偵聽器才能正常工作。設置您的CheckBox焦點=「假」應該爲你做的竅門http://stackoverflow.com/questions/1121192/android-custom-listview-unable-to-click-on-items – 2012-03-27 08:33:10

回答

24

設置如下屬性您單選按鈕

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

,並在您OnItemClickListener,你需要設置單選按鈕的檢查由代碼標誌。

你的ListView如下

集:

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

是的,現在,它沒關係。但是如何在用戶點擊項目區域時選擇單選按鈕? (並使其成爲單個選擇列表) – 2012-03-27 08:34:17

+0

請參閱我更新的答案...實際上,您需要通過OnItemClickListener中的代碼處理此問題,以便在單擊該項目時檢查單選按鈕 – waqaslam 2012-03-27 08:35:31

+0

是的,您是否也可以建議如何製作廣播列表中的按鈕是單個選擇?我的意思是,目前,儘管我將列表的選擇模式設置爲單一。但每當我點擊一個列表項時,單選按鈕被設置爲通過代碼「檢查」,這使得列表看起來像多個可選擇的。 – 2012-03-27 08:40:54

2

將此代碼添加到您的單選按鈕XML代碼:

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

另一個關鍵字來解決這個問題是TouchDelegate。

編輯:

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

+0

這對我來說非常合適。 +1 – prolink007 2012-07-10 21:29:33

相關問題