android получить позицию нажатого элемента в gridview
Как мы знаем, используя Android grid view, мы можем сделать следующее и получать уведомления, когда элемент нажат:
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 ответа:
Предполагая, что вы используете пользовательский адаптер для GridVIew, в методе getView вы можете просто добавить тег к объекту Button, который содержит позицию, переданную в getView:
button.setTag(new Integer(position));
Затем, в методе onClickListener, с видом, который передается в (кнопка) вы можете сделать:
Integer position = (Integer)view.getTag();
И затем обработайте значение позиции оттуда.
Редактировать: По-видимому, наилучшей практикой было бы сделать:
button.setTag(Integer.valueOf(position));
Вместо использования целочисленного конструктора.