Android 将侦听器添加到可展开列表项中的子节点
我使用了教程中给出的代码 我已附上ExpandableListView的图像 我需要一些关于如何将侦听器添加到单个子节点的代码示例,例如,单击地址应该将用户带到另一个活动。 期待您的回复。Android 将侦听器添加到可展开列表项中的子节点,android,android-listview,Android,Android Listview,我使用了教程中给出的代码 我已附上ExpandableListView的图像 我需要一些关于如何将侦听器添加到单个子节点的代码示例,例如,单击地址应该将用户带到另一个活动。 期待您的回复。 谢谢。好的,您不能使用上面的示例将侦听器添加到您的子视图中。您必须有一个自定义适配器。在这个自定义适配器的getChildView和getGroupView中,您可以提供自己的侦听器。例如 public View getGroupView( int groupPosition,
谢谢。好的,您不能使用上面的示例将侦听器添加到您的子视图中。您必须有一个自定义适配器。在这个自定义适配器的
getChildView
和getGroupView
中,您可以提供自己的侦听器。例如
public View getGroupView(
int groupPosition,
boolean isExpanded,
View convertView,
ViewGroup parent) {
ViewGroup viewGroup = null;
if (convertView == null) {
LayoutInflater li = (LayoutInflater) getApplication().getSystemService(LAYOUT_INFLATER_SERVICE);
if (li != null) {
viewGroup = (ViewGroup) li.inflate(R.layout.listitems_group, parent, false);
}
} else {
viewGroup = (ViewGroup) convertView;
}
Button button = (Button) viewGroup.findViewById(R.id.group_button);
button.setOnClickListener(new OnClickListener() {
void onClick(View v) {
// Do what you want here
}
});
return viewGroup;
}
这里我在我的GroupView中有一些按钮,我想添加onClick listener的按钮。您还可以让您的活动覆盖onChildClick方法:
@Override
public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long id) {
//implement logic to start the appropriate activity for this child.
}
从android开发人员站点:
我还建议下载。您可以了解有关设置的更多信息。我无法完全理解代码,您的意思是说我不应该使用SimpleExpandableListAdapter,而应该使用自定义适配器,为了更好地理解,我不熟悉android的任何链接。谢谢。是的,我就是这个意思。看看这个有点关联的帖子:Scott在下面给出的方法是有效的,但问题是如何从该子节点获取文本……好吧,这个方法只有在您试图捕获对列表视图项(即整行)的单击时才有效。如果行由多个视图组成,则此方法不会标识(行中视图组的)已单击的子视图。调用它时引用了包含的视图组。举例来说,假设您的行由一个
LinearLayout
root
和两个TextView
的child1
和child2
组成。如果我们单击child1
,将调用onChildClick
,但引用的是root
,而不是我们可能认为的child1
。感谢您提供的信息。我还没有创建一个具有多个可单击视图的子项的可扩展列表视图。@Scott谢谢,但我如何才能获得该组或父节点的子节点中显示的电话号码,以便调用某个活动来调用该特定号码。您可以使用onChildClick方法的参数。使用“查看”从单击的列表项获取数据。或者您可以使用groupPosition和childPosition。您可以将发送到适配器中的组和子数据设置为活动中的字段变量。然后使用groupPosition和childPosition检索组中单击的子级的数据。请参阅上面的@Scott answer(+1)。我现在明白你想做什么了。如果您只需要给定行代表的电话号码,只需使用onChildClick
,并使用groupPosition
和childPosition
从适配器中使用SimpleExpandableListAdapter::getChild
获取数据。这种情况下不需要自定义适配器。如果你需要更多信息,请告诉我。
@Override
public boolean onChildClick(ExpandableListView expandableListView, View view, int groupPosition, int childPosition, long id) {
//implement logic to start the appropriate activity for this child.
}