Вот как я это сделал. В моем (пользовательском) классе адаптера:
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = null;
if (convertView == null) {
LayoutInflater inflater = context.getLayoutInflater();
view = inflater.inflate(textViewResourceId, parent, false);
final ViewHolder viewHolder = new ViewHolder();
viewHolder.name = (TextView) view.findViewById(R.id.name);
viewHolder.button = (ImageButton) view.findViewById(R.id.button);
viewHolder.button.setOnClickListener
(new View.OnClickListener() {
@Override
public void onClick(View view) {
int position = (int) viewHolder.button.getTag();
Log.d(TAG, "Position is: " +position);
}
});
view.setTag(viewHolder);
viewHolder.button.setTag(items.get(position));
} else {
view = convertView;
((ViewHolder) view.getTag()).button.setTag(items.get(position));
}
ViewHolder holder = (ViewHolder) view.getTag();
return view;
}
По сути, задача состоит в том, чтобы установить и получить индекс положения с помощью методов setTag
и getTag
. Переменная items
относится к ArrayList
, содержащему мои пользовательские объекты (адаптеры).
Также см. этот учебник для подробных примеров. Дайте мне знать, если вам нужно, чтобы я что-то прояснил.