Java 如何处理ExpandableListView子级行中不同视图的事件单击

Java 如何处理ExpandableListView子级行中不同视图的事件单击,java,android,expandablelistview,Java,Android,Expandablelistview,我知道如何通过订阅ExpandableListView(或重写ExpandableListActivity回调方法:onChildClick)来处理事件。这两个选项让我知道了详细的groupPosition、childPosition和行布局视图(我为child定制的布局)。 但我想知道单击了哪个特定视图(例如自定义行的哪个textview) 我尝试重写mSimpleCursorTreeAdapter的getView方法,并将文本视图订阅到onClick侦听器。但是这样我就不能知道子行的grou

我知道如何通过订阅ExpandableListView(或重写ExpandableListActivity回调方法:onChildClick)来处理事件。这两个选项让我知道了详细的groupPosition、childPosition和行布局视图(我为child定制的布局)。 但我想知道单击了哪个特定视图(例如自定义行的哪个textview)

我尝试重写mSimpleCursorTreeAdapter的getView方法,并将文本视图订阅到onClick侦听器。但是这样我就不能知道子行的groupPosition和childPosition。如果我以这种方式处理视图的onClick,事件将被消耗,OnClickChildListener和回调方法onChildClick将永远不会被调度

我想我说错了什么。我希望有人告诉我怎么做

谢谢。

我找到了一个解决方案:

    @Override
    public View getChildView(int groupPosition, int childPosition,
            boolean isLastChild, View convertView, ViewGroup parent) {
        View row = convertView;
        if (row == null) {
            LayoutInflater inflater = getLayoutInflater();
            row = inflater.inflate(R.layout.row_child,
                    parent, false);
        }

        TextView textOne = (TextView) row
                .findViewById(R.id.text_row_child1);
        TextView textTwo = (TextView) row
                .findViewById(R.id.text_row_child2);

        HandleOnClick handleOnClick = new HandleOnClick (
                groupPosition, childPosition, getChildId(groupPosition,
                        childPosition));
        textOne.setOnClickListener(handleOnClick);
        textTwo.setOnClickListener(handleOnClick);

        return super.getChildView(groupPosition, childPosition,
                isLastChild, row, parent);
    }

    private class HandleOnClick implements OnClickListener {
        private int groupPosition;
        private int childPosition;
        private Long id;

        public HandleOnClick (int groupPostion, int childPosition,
                Long id) {
            this.groupPosition = groupPostion;
            this.childPosition = childPosition;
            this.id = id;
        }

        public void onClick(View v) {

            idChild = id; 
            switch (v.getId()) {

            case R.id.text_row_child1:


                break;


            case R.id.text_row_child2:

                //........

谢谢

我一直在寻找解决方案。我喜欢您的方法,我可能会使用它,尽管在适配器中定义单击侦听器感觉有点奇怪。最好从活动本身定义适配器(可能在组被扩展时)。谢谢你的解决方案。