私は以下のようなアンドロイドXML構造を持っています。子レイアウトやそのコンテンツ(TextViewやImage)がクリックされたときに、clickListenerがsomeActionを実行するためにトリガーされるようにしたいと思います。問題は、レイアウトがランダムに生成され、クリックリスナーで個別に作成するには多すぎるということです。複数の子レイアウトに対してonClickリスナーを実装する
これを解決する最良の方法は何ですか。これまでのところ私は(偽)setClickableに
//MainLayoutContaining multiple children
<Layout 1 >
//This Layouts here are randomly generated programatically
<Layout Child 1>
<Textview />
<ImageView />
<Textview />
</Layout Child 1>
<Layout Child 2>
<Textview />
<ImageView />
<Textview />
</Layout Child 3>
.
.
.
.
//End of Child Layouts
</Layout 1>
をsetClickable(真)とその子の子のレイアウトを設定している編集 私はこの
for(int i=0;i<newsFeedArray.length(); i++){
LinearLayout a = new LinearLayout(getApplicationContext());
a.setOrientation(LinearLayout.VERTICAL);
a.setClickable(true);
a.setOnClickListener(myListener);//New Code From Answer
articleTitle.setText(articleItemTitle.toUpperCase());
articleTitle.setClickable(false);
TextView articleBody = new TextView(getApplicationContext());
articleBody.setText(html2text(articleItemIntrotext));
articleBody.setClickable(false);
a.addView(articleTitle);
a.addView(articleImage);
a.addView(articleBody);
}
のようなループは、私が今までできていています各レイアウトのonClickを検出します。今私が望むのは、クリックされたその子レイアウトのIDを検出することです。
これは、カスタムのonClickListenerクラスなしでも実行できます。それはまだ視聴者が視聴者に設定されていると仮定しています – Zoe
@ LunarWatcher「問題はレイアウトがランダムに生成され、クリックリスナーで個別に持つことが多すぎます」と聞いています。クリックに 'someAction'を追加する必要があります。これは、各ビューに対してonClickListenerを宣言する必要があることを意味します(クリックリスナーで個別に表示するにはあまりにも多くあります)。またはオンクラス実装で行うことができます。 –
基本的には、そのメソッドをクラスにコピーして貼り付け、1つの目的のために新しいクラス全体を作成するのではなく、 'OnClickListener'を実装することができます – Zoe