2015-08-08 94 views
0

我在我的视图中有一个ExpandableListView。我已经实现了它的小孩点击监听器,它的工作完美。如何以编程方式执行ExpandableListView子项目单击

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

现在,我还希望以编程方式执行子点击。有没有可能以编程方式调用它?

我已经通过我回convertViewgetChild()方法,并通过对执行上点击试过,

((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

是其可能的,你需要从ExpandableListView然后performClick()得到ChildView,如:

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

它运作良好...

一次ChildView是在你的口袋里,那么你还可以访问&发挥其子视图,如:

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

希望能帮到你

相关问题