我正在尝试创建一个通用页面,用于创建附加了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()调用它们,它需要变量来是'最后'。你能帮我找到解决办法吗?
除了行intent.setData(...)
之外,其余代码完美无缺答案 0 :(得分:0)
您可以声明link
为最终版并直接在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;
final String link = MainActivity.GetbyId(id, MainActivity.getSaleArray()).link;
imageButton.setOnClickListener(new ImageButton.OnClickListener() {
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse(link));
context.startActivity(intent);
}
});