Как узнать, какой элемент был нажат, если элемент содержит собственный класс View, который реализует собственный метод onClick?

У меня есть пользовательский класс View, который содержит 2 TextViews, RatingBar, ImageView и 4 ImageButtons. Когда я нажимаю на этот вид, он расширяется, и появляются эти кнопки изображения. Если я нажму еще раз, он вернется в исходное состояние. Все отлично работает. Но я пытаюсь сделать ListView из этих пользовательских представлений, поэтому XML-файл с элементом содержит только это пользовательское представление.

У меня есть собственный адаптер для моего списка:

public class CustomViewAdapter extends BaseAdapter {

private Note[] items;
private LayoutInflater inflater;

public CustomViewAdapter(Context context,Note[] elements){
    this.items=elements;
    this.inflater=LayoutInflater.from(context);
}

@Override
public int getCount() {
    return items.length;
}

@Override
public Object getItem(int position) {
    return items[position];
}

@Override
public long getItemId(int position) {
    return position;
}

@Override
public View getView(final int position, View convertView, ViewGroup parent) {
     CustomView view;
    if (convertView == null) {
        view = (CustomView) inflater.inflate(R.layout.itemoflist, null);

    } else {
        view = (CustomView) convertView;

    }
     Note item = (Note) getItem(position);
    view.showNote(item);
    return view;
  }
}

MainActivity унаследован от ListActivity. Конечно, OnItemClick не работает, а Item можно щелкнуть.

Итак, как мне узнать позицию элемента, по которому был сделан щелчок, чтобы сохранить расширяемое состояние элементов?


person Nikita Mednikov    schedule 05.08.2015    source источник


Ответы (1)


Если вы хотите обработать прослушиватель щелчков определенного элемента из вашего пользовательского представления в списке, обработайте onClickListener для элементов в пользовательском представлении в вашем CustomViewAdapter. Для позиции элементов в методе getView вашего адаптера вы получаете позицию в качестве аргумента метода getView.

person SANAT    schedule 05.08.2015