android获取gridview中单击项的位置

时间:2012-10-04 19:49:46

标签: android gridview android-widget android-gridview

我们知道使用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();
    }
});

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

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

感谢

2 个答案:

答案 0 :(得分:28)

假设您正在为GridVIew使用自定义适配器,在getView方法中,您只需向Button对象添加一个标记,该对象包含传递给getView的位置:

button.setTag(new Integer(position));

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

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

然后从那里处理位置值。

修改 最佳做法似乎是:

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

而不是使用Integer构造函数。

答案 1 :(得分:1)

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();
    }
});