2015-08-08 1 views
0

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

@Override 
public boolean onChildClick(ExpandableListView parent, View view, 
     int groupPosition, int childPosition, long id) { 
} 

Теперь я также хочу программно выполнить дочерний щелчок. Можно ли назвать это программным путем?

Я попытался вернув мой convertView на getChild() метод и выполнение по щелчку на что,

((View)updateListAdapter.getChild(0, 2)).performClick(); 

, но не повезло. Это не вызов метода onChildClick().

ответ

1

ExpandableListView делает есть метод

public boolean performItemClick (View v, int position, long id) 

, но есть только один аргумент; где находится группа/ребенок?

Я посмотрел код, и что он хочет, это квартира. Так что-то подобное должно работать (жаль, что я не пробовал):

long packedPosition = ExpandableListView.getPackedPositionForChild(group, child); 
int flatPosition = expListView.getFlatListPosition(packedPosition); 
expListView.performItemClick(view, flatPosition, childId); 
+0

что посмотреть? performItemClick (view -> this) –

+0

@AlpAltunel Это вид элемента, который вы хотите щелкнуть. Я оставил этот шаг, но, очевидно, вам нужно взглянуть на эту работу. Этот ответ объясняет это лучше, чем я: https://stackoverflow.com/a/28335106/4504191 –

0

да его возможно, все, что вам нужно, чтобы получить ChildView от ExpandableListView затем performClick(), как:

expandableList.getExpandableListAdapter().getChildView(1, 0, true, null, null).performClick(); 

Он хорошо работает ...

раз ChildView находятся в кармане, то вы можете также получить доступ к & играть с его подразделами видом, как:

(expandableList.getExpandableListAdapter().getChildView(1, 0, true, null, null).findViewById(R.id.btn_continue)).performClick(); 

надеюсь, что это вам поможет

Смежные вопросы