ListView をクリックしても onItemClick が実行しない時の対処 # Android

原因

レイアウト内に ListView と Button が共存していて、Button の onClick が onItemClickListener の機能を吸収しているから。

対処方法は 2 つのうちいずれか

  • Button のレイアウトに項目を追加する
  • ListView にリスナーを登録する

  • Button のレイアウトに項目を追加する
<Button
  ...
  ...
  android:focusable="false" <!-- <= 追加する -->
</Button>
  • ListView にリスナーを登録する
ListView list = (ListView) findViewById(R.id.samplelist);
list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
      @Override
      public void onItemClick(AdapterView parent, View view, int position, long id) {
        // list の項目がクリックされた時の処理を書く
        startActivity(new Intent(getApplication(), SampleActivity.class));
      }
    });

参考元 # thanks

Button onClick and ListView onItemClick