Как реализовать setOnItemClickListener расширяемого представления списка из кнопки, присутствующей в дочернем представлении?

Я пытаюсь понять, как реализовать расширяемое представление списка setOnItemClickListener из кнопки, присутствующей в дочернем представлении. Вот что у меня есть на данный момент:

public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    if (convertView == null) {
        LayoutInflater infalInflater = (LayoutInflater) context
            .getSystemService(context.LAYOUT_INFLATER_SERVICE);
        convertView = infalInflater.inflate(R.layout.weekly_event_child_items, null);
    }

    Button mybutton = (Button) convertView.findViewById(R.id.button2);
    mybutton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v1) {
            ((ExpandableListView) parents).performItemClick(v1,positions, 0);
        }
    });
}

В основном виде я реализовал:

expandableListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
        System.out.println("clicked");
    }
});

Я ожидаю ((ExpandableListView) родителей) .performItemClick (v1, position, 0 this, чтобы каким-то образом вызвать обработчик событий в expandableListView.setOnItemClickListener, которого в настоящее время не происходит. Я хочу сделать вызов нажатием кнопки, присутствующей в дочернее представление для вызова прослушивателя щелчков по элементам расширяемого списка.


person Community    schedule 08.08.2016    source источник
comment
Вы можете пояснить, о чем спрашиваете? Каков результат кода, который вы разместили здесь, и каких результатов вы ожидали? (В зависимости от того, что вы запрашиваете, журналы тоже могут быть полезны).   -  person EJoshuaS - Reinstate Monica    schedule 08.08.2016
comment
Я ожидаю ((ExpandableListView) родителей) .performItemClick (v1, position, 0 this, чтобы каким-то образом сделать вызов expandableListView.setOnItemClickListener, которого не происходит. Я хочу сделать вызов из щелчка кнопки, присутствующего в дочернем представлении, чтобы сделать вызов к расширяемому списку setOnItemClickListener.   -  person    schedule 09.08.2016
comment
Что происходит сейчас? Есть ли исключение, когда вы делаете ((ExpandableListView) parent) .performItemClick (v1, position, 0); или он успешно вызывается и просто ничего не делает? Кстати, на данный момент родительский элемент null? Я не понимаю, где вы это устанавливаете. Я думаю, что вы, вероятно, не захотите использовать эту переменную на данном этапе, вам, вероятно, понадобится другой способ получения расширяемого списка. Почему бы просто не получить расширяемый список с помощью другого вызова FindViewById?   -  person EJoshuaS - Reinstate Monica    schedule 09.08.2016
comment
Кроме того, это полный код? Я не вижу ничего, что возвращается из опубликованного вами метода - я бы не ожидал, что он вообще будет компилироваться.   -  person EJoshuaS - Reinstate Monica    schedule 09.08.2016


Ответы (1)


Думаю, что способ ниже:

public void onClick(View v1) {
    ((ExpandableListView) parents).performItemClick(v1,positions, 0);
}

не реализован должным образом. Если вы выполняете операцию с ExpandableListView, вы можете просто получить его с помощью FindViewById (...).

Я думаю, что это также неправильное место для установки прослушивателя событий кнопки, поскольку это не связано конкретно с отдельными дочерними представлениями.

person EJoshuaS - Reinstate Monica    schedule 09.08.2016
comment
я не получаю исключения, но setOnItemClickListener не вызывается - person ; 09.08.2016
comment
Сам setOnItemClickListener вызывать не следует - все, что он делает, это устанавливает onItemClickListener. Сам по себе он не является обработчиком событий. - person EJoshuaS - Reinstate Monica; 09.08.2016