10

正如我们所知,使用 android 网格视图,我们可以执行以下操作并在单击项目时收到通知:

gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
    Toast.makeText(PopularCapitActivity.this, "" + position, Toast.LENGTH_SHORT).show();
    }
});

我们也知道,如果网格中的单元格包含一个可点击的项目,比如一个按钮,上面的内容不会被触发。

所以目前我有一个网格视图,每个单元格都有自己的按钮,所以现在当用户点击按钮时,它将根据按钮所在的单元格有自己的操作,我的问题是,我如何访问单元格位置在按钮处理程序中?

谢谢

4

2 回答 2

31

假设您正在为 GridVIew 使用自定义适配器,在 getView 方法中,您可以简单地将标签添加到包含传递给 getView 的位置的 Button 对象:

button.setTag(new Integer(position));

然后,在 onClickListener 方法中,使用传入的视图(按钮),您可以执行以下操作:

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

然后从那里处理位置值。

编辑: 看来最好的做法是:

button.setTag(Integer.valueOf(position));

而不是使用 Integer 构造函数。

于 2012-10-04T19:57:15.013 回答
3
gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() 
{
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id)
    {
        String a = String.valueOf(position);
        Toast.makeText(getApplicationContext(), a, Toast.LENGTH_SHORT).show();
    }
});
于 2017-02-11T17:06:25.497 回答