クリックすると Web ページにリダイレクトされるように、URL が添付された画像ボタンを作成する一般的なページを作成しようとしています。ボタンの数もコンパイル時に生成され、リンクもオンライン ソースから取得されます。
私の問題は、一般的なループで OnClickListener を作成しようとすると、ボタンがクリックされるまで作成されないため、ループの最後まで作成されないことです。
LayoutInflater inflater = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View rowView = inflater.inflate(rowResourceId, parent, false);
ImageButton imageButton = (ImageButton) rowView.findViewById(R.id.imageButton);
int id = Integer.parseInt(Ids[position]);
String imageFile = MainActivity.GetbyId(id, MainActivity.getSaleArray()).imageURL;
String link=MainActivity.GetbyId(id, MainActivity.getSaleArray()).link;
imageButton.setTag(link);
imageButton.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse((String) imageButton.getTag()));
context.startActivity(intent);
}
});
上記のコードでは、ID とリンクを含む不明なサイズの配列があり、各ボタンのタグに必要なデータがありますが、OnClick ブロックで imageButton.getTag() を使用してそれらを呼び出すことはできません。変数を「final」にする必要があります。 '。これを回避する方法を見つけるのを手伝ってもらえますか?
残りのコードは完全に機能しますが、intent.setData(...) の行を除きます。