【问题标题】:Gridview buttons网格视图按钮
【发布时间】:2013-05-09 20:17:43
【问题描述】:

我正在尝试修复我的按钮点击事件,现在我的每个按钮都做出相同的反应。我希望每个按钮最终都能做不同的事情。我目前的代码是:

@Override
public View getView(int position, View convertView, ViewGroup parent) {
    Button myButton;

    if (convertView == null) {
        myButton = new Button(mContext);
        myButton.setLayoutParams(new GridView.LayoutParams(230, 150));
        myButton.setPadding(8, 8, 8, 8);

        convertView = myButton;
    } else {
        myButton = (Button) convertView;
    }

    myButton.setText(mButtons[position]);
    myButton.setId(position);
    myButton.setOnClickListener(new MyOnClickListener(position));
    return convertView;
}

class MyOnClickListener implements OnClickListener {

    private final int position;
    final MediaPlayer mpButton1Click = MediaPlayer.create(mContext,
            R.raw.myAudio);

    public MyOnClickListener(int position) {

        this.position = position;

    }

    public void onClick(View v) {

        int position = v.getId();

        if(position == 0){
        mpButton1Click.start();
        }

    }

}

我目前正在使用媒体播放器,但这可能会改变。我知道我可能需要在 onClick() 方法中传递单个按钮位置,但我不知道如何做到这一点(或者是否有更简单的方法)。任何帮助,将不胜感激。

【问题讨论】:

  • 你已经完成了:你已经添加了setId(position)。所以在你的 OnClickListener 中:使用int position = v.getId();。瞧,你有你的位置。
  • 只要得到你的位置 int position = v.getId();就像@SherifelKhatib 在你的 onClick() 实现中提到的那样。
  • 好的,我明白了。现在,一旦我在 onClick 中使用position,我该怎么办。我顺便编辑了我的代码
  • 当然他们的反应都是一样的:你总是调用mpButton1Click变量,不管是什么位置。
  • @vorrtex 是的,我意识到,我只是不知道如何使用位置变量,因为你不能将它传递给 start()

标签: android button gridview


【解决方案1】:

你应该为每个按钮使用一个标签,你将能够区分它们。

button.setTag(Integer.valueOf(position);

在 onClickListener 上你只需要这样做:

Integer position = (Integer)view.getTag();

【讨论】:

  • 那么我什至需要拥有自己的 onClickListener 吗?
  • 否,因为位置是由标签视图给出的。你可以在经典监听器中访问它,它是参数。
  • 好吧,我对你所说的在 onClickListener 上添加位置变量感到困惑。我需要在 onClick 中使用它吗?
  • 有两件事,1. 您可以使用您自己的代码来扩展 OnClickListener 并使用 @SherifelKhatib 建议的位置。 2. 或者你可以只实现一个 onClickListener 并使用 Shemsu 建议的 views 标签
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-06-26
  • 1970-01-01
  • 2014-09-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多