ピンタレストのようなレイアウトを作成しようとしています。私はこれを達成する方法を見つけます:ピンタレストのような Android 異種グリッドビュー? !
ただし問題は、各画像をクリックした後にアイテムの詳細を表示したいということです。しかし、LinearLayout.addView() を使用してすべての ImageView を追加しているので、クリック可能にする方法がわかりません。
ビューの各項目をクリックできる方法はありますか?
ピンタレストのようなレイアウトを作成しようとしています。私はこれを達成する方法を見つけます:ピンタレストのような Android 異種グリッドビュー? !
ただし問題は、各画像をクリックした後にアイテムの詳細を表示したいということです。しかし、LinearLayout.addView() を使用してすべての ImageView を追加しているので、クリック可能にする方法がわかりません。
ビューの各項目をクリックできる方法はありますか?
使用する:
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//do magic
}
});
そして、レイアウト ファイルで、ImageView をクリック可能としてマークします。
<ImageView
...
android:clickable="true">
...
</ImageView>
クリックすると表示されるタグ情報を画像ビューに追加することで、これを非常に簡単に行うことができます。
画像ビューを追加すると、次のようになります。
ImageView iv = new ImageView(context);
iv.setOnClickListener(your_listener);
iv.setTag("Item information");
linearLayout.addView(iv);
次に、クリックリスナーで:
public void onClick(View v) {
if(v instanceof ImageView) {
String info = (String)v.getTag();
/* Show information here */
}
}
これを使って :
view.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// ADD your action here
}
});
または、クラスにインターフェイスを実装させ、メソッドOnClickListner
をオーバーライドしますonClick()
リンクしたコードに基づいて、作成時に各画像ビューにリスナーを追加できます。
linear1 = (LinearLayout) findViewById(R.id.linear1);
linear2 = (LinearLayout) findViewById(R.id.linear2);
linear3 = (LinearLayout) findViewById(R.id.linear3);
for(int i=0;i<n;i++)
{
ImageView iv = new ImageView(this);
iv.setImageResource(R.id.icon);
iv.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
//Your click code
}
}
int j = count % 3; <----
if(j==0)
linear1.addView(iv);
else if(j==1)
linear2.addView(iv);
else
linear3.addView(iv);
}