将侦听器添加到可扩展列表项中的子节点

时间:2011-12-21 10:55:28

标签: android android-listview

我使用了教程中给出的代码 http://mylifewithandroid.blogspot.com/2010/12/expandable-list-and-checkboxes.html 我附上了ExpandableListView的图像 enter image description here

SimpleExpandableListAdapter expListAdapter =
        new SimpleExpandableListAdapter(
            this,
            createGroupList(),  
            R.layout.child_row, 
            new String[] { "CityName" },
            new int[] { R.id.childname },       
            createChildList(),  
            R.layout.child_row, 
            new String[] { "citydetails", "city" }, 
            new int[] { R.id.childname, R.id.city}  
        );

    setListAdapter( expListAdapter );

我需要一些关于如何将监听器添加到各个子节点的代码示例,例如单击Address应该将用户带到另一个活动。 期待你的回复。 感谢。

2 个答案:

答案 0 :(得分:1)

AFAIK,您无法使用上面的示例向您的子视图添加侦听器。您必须拥有自定义适配器。在此自定义适配器的getChildViewgetGroupView中,您可以提供自己的侦听器。例如

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监听器。

答案 1 :(得分:1)

您还可以让您的活动覆盖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开发网站:onChildClick

我还建议下载API Demos。您可以详细了解如何设置here