使用不同的onclick侦听器创建通用图像按钮

时间:2013-09-24 06:57:36

标签: android imagebutton generic-programming

我正在尝试创建一个通用页面,用于创建附加了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(...)

之外,其余代码完美无缺

1 个答案:

答案 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);
    }
});