2016-07-02 17 views
0

問題は:チェックボックスをクリックすると、ListViewのOnItemClickListenerがトリガーされませんでした。Android - CheckBoxをクリックしてもListViewのonItemClickがトリガーされないのはなぜですか?

私はGoogleの回答ですが、解決策を見つけることができません。

誰でも手伝ってもらえますか?なぜこれがうまくいかないのか知りたい。 fragment_vacant_house.xmlの

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) { 

    View rootView = inflater.inflate(R.layout.fragment_vacant_house, container, false); 

    ListView vacantHouseList = (ListView) rootView.findViewById(R.id.vacant_house_list); 
    vancantHouseAdapter = new VacantHouseListAdapter(
      getActivity(), 
      R.layout.vacant_house_list_item, 
      new ArrayList<VacantHouse>() 
    ); 
    vacantHouseList.setAdapter(vancantHouseAdapter); 
    vacantHouseList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      CheckBox vacantHouseCheckbox = (CheckBox) view.findViewById(R.id.vacant_house_checkbox); 
      Log.v("TAG", (String) vacantHouseCheckbox.getText()); 
     } 
    }); 

    return rootView; 
} 

内容::vacant_house_list_item.xmlの

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingBottom="@dimen/activity_vertical_margin" 
    android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    tools:context=".VacantHouseActivityFragment" 
    tools:showIn="@layout/activity_vacant_house"> 


    <ListView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:id="@+id/vacant_house_list" /> 
</FrameLayout> 

内容:VacantHouseActivityFragmentのonCreateView方法インサイド

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 


    <CheckBox 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="New CheckBox" 
     android:id="@+id/vacant_house_checkbox" 
     android:focusable="false" /> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:textAppearance="?android:attr/textAppearanceSmall" 
     android:text="Small Text" 
     android:id="@+id/vacant_house_rent" 
     android:textColor="@color/abc_btn_colored_borderless_text_material" 
     android:textSize="@dimen/notification_subtext_size" 
     android:focusable="false" /> 

</LinearLayout> 
+0

をアダプタのコードを追加してください。 –

答えて

0

解決策が見つかりました。

ただ、この二つの性質を追加:

android:clickable="false" 
android:focusable="false" 
0

があなたのチェックボックスをonCheckChangeListener設定し

. 
. 
. 
vacantHouseList.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
    @Override 
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
     CheckBox vacantHouseCheckbox = (CheckBox) view.findViewById(R.id.vacant_house_checkbox); 
    vacantHouseCheckbox.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { 
     @Override 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
       if (isChecked) { 
        // checkbox is checked now 
        //your logic code here 
       } else { 
        // checkbox is unchecked now 
        //your logic code here 
       } 
      } 
      }); 

     Log.v("TAG", (String) vacantHouseCheckbox.getText()); 
    } 
}); 
. 
. 
. 
+0

チェックボックスをクリックすると、リストビューのonItemClickListenerがトリガーされます。選択されているアイテムの数がわかっていて、配列の位置を知る必要があるためです。 – user3087000

+0

新しいメソッド(関数)を作成し、そのメソッド内にすべてのコードを入れ、そのメソッドを 'onItemClick'と' onCheckChange'の両方で呼び出します。 – ebyt

+0

ListViewのonItemClickListenerから位置パラメータを取得する必要があります。 – user3087000

関連する問題