ListViewのOnItemClickListener反応しな過ぎ問題

Androidアプリを開発中、詰まったところを忘備録としてまとめます。

今回はListViewで表示した各要素タップで何かしら処理をさせる手段についてです。

 

そもそもの発端は

「ListViewで表示した要素タップして画面遷移したい!」

 という欲求があったから。

 

が、いろいろ調べつつ実装しても、表示された要素をタップしたところでウンともスンとも言わないという……!

みんな嘘つきじゃないか……!

 

疑心暗鬼に陥りかけつつさんざん四苦八苦した挙げ句、次のような結論に至りました。

 

 ListViewで表示された要素内にonClickListenerで反応する要素が存在すると、OnItemClickListenerが反応しなくなる

 

要素内にButtonなどを配置していると、いくらListView要素をタップしたところでOnItemClickListenerが食われてしまうようです。

(この情報になかなか辿り着けなかった……)

 

以下、実装

public class SampleListViewActivity extends AppCompatActivity implements AdapterView.OnItemClickListener {

    ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //ListView用のレイアウトを設定
        setContentView(R.layout.sample_list_view);

        SampleListAdapter adapter = new SampleListAdapter(getApplicationContext());
        adapter.add(/*ここで任意のデータをadapterに渡す*/);
        
        listView = (ListView) findViewById(R.id.listView);
        //adaperをセット
        listView.setAdapter(adapter);

        listView.setOnItemClickListener(this);
    }

    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

        //ココであんな事やこんな事をさせる
    }
}

※Adapter等の使い方はグーグル先生に訊いて下さい

 

結局、ネット各所であらゆる方々が掲載しているサンプル通りに実装すれば、普通に動くよね、っていう。

疑って本当にすまんかった。

 

 では、今回何故こんなミスをしたのか?

そもそもListViewの要素をタップしてイロイロ処理をさせたいと思うまでに、以下のようなプロセスがありました。

  1. ListViewの要素にButton配置して、Button押されたらダイアログ表示して何かいろいろしたいなぁ
  2. ダイアログ表示するにはFragment使うんやろ!オイラ詳しいんだぞ!
  3. Fragmentよく分からん……どうやっても上手くいかん……
  4. よっしゃ、Button押下じゃなくて、ListViewタップでActivityを遷移して、遷移先でいろいろやったろ!(諦め)
  5. 上記のButtonを残したまま)サンプル通り実装しても何も動かん……皆嘘つきや……

その後、ButtonにOnItemClickListenerが食われてる説が急浮上し、いらない処理を消してみたらアラフシギ!

 横着はいけないね、というだけの話でした(死)

 


という感じで今回の忘備録は終了です。

千悠は アプリ開発ペーペーのクソ雑魚なのでこんな凡ミスをしましたが、もし万が一にも似たようなところで詰まっている方がいれば、少しでも力になれればと、つらつら書いてみました。

記事内でよく分からない部分があれば、恐らく千悠もよく分かってないのでグーグル先生に訊いて下さい。

ではでは、今回はこの辺で。

新年のご挨拶

明けましておめでとうございます。

千悠です。

 

このブログを開設してからこの方、まるで更新なんかしないじゃないか!

と我ながら常々思っていたのですが、今年はいろいろと物作りに注力したいため、気が向いた時にでもブログの更新もしていこうかなぁ、と。

 

読んだ本の話やら物書きやらアプリ作成のアレコレやら何やら、いろいろ頑張っていこうと思うので、よろしくお願い致します!

HP&ブログ開設

初めまして、こんにちは、千悠(ちはる)です。

 

TwitterやらFacebookやらと、自分発信の場としてSNSが大いに盛り上がりを見せている今日この頃ですが、「自分で作った物を一括閲覧できるようにしたいなぁ」と思い立ち、サクッとHPを作って更にサクッと当ブログを開設。

 

SNSだけでは、やっぱり作品の取り扱いは不便なわけで。

それにやっぱり、自作HPにコンテンツをどんどん増やしていくってのは、男のロマンなわけで(?)

 

そんなこんなでゆるりと生まれた.free( )ですが、その名前に違わず、ゆるりと自由にやっていきます。

HPは作品の格納庫として、当ブログは思い付いたときに思い付いたことを書き連ねていく形になるかなぁ、と。

 

ではでは、どうぞよろしくお願い致します。