Android ExpandableListView子级的自定义动画

Android ExpandableListView子级的自定义动画,android,animation,parent-child,expandablelistview,slide,Android,Animation,Parent Child,Expandablelistview,Slide,我想在ExpandableListView中为儿童使用自定义动画(向下/向上滑动)。因此,如果我单击元素#2,我希望父元素#2的子元素使用动画展开。当我再次单击父对象时,单击“撤消/关闭” 但是,我确实在将动画指向孩子本身时遇到了问题。我能得到的最接近的方法是使用“myListView.getChildAt(groupPosition).setAnimation(向下滑动);”为父对象设置动画,如下所示。 当我使用这段代码并单击元素x时,元素x将生成一个动画-但应该生成动画的是孩子,而不是单击的

我想在ExpandableListView中为儿童使用自定义动画(向下/向上滑动)。因此,如果我单击元素#2,我希望父元素#2的子元素使用动画展开。当我再次单击父对象时,单击“撤消/关闭”

但是,我确实在将动画指向孩子本身时遇到了问题。我能得到的最接近的方法是使用“myListView.getChildAt(groupPosition).setAnimation(向下滑动);”为父对象设置动画,如下所示。 当我使用这段代码并单击元素x时,元素x将生成一个动画-但应该生成动画的是孩子,而不是单击的家长

MainActivity中的我的代码,其中“myAdapter”是适配器,“myListView”是ExpandableListView:

    ExpandableListAdapter myAdapter = new ExpandableListAdapter(context, arrRO);
    final ExpandableListView myListView = (ExpandableListView) findViewById(R.id.reminderlistView);
    myListView.setAdapter(myAdapter);

    myListView.setOnGroupClickListener(new ExpandableListView.OnGroupClickListener() {
        @Override
        public boolean onGroupClick(ExpandableListView parent, View v, int groupPosition, long id) {

            if (myListView.isGroupExpanded(groupPosition)) {
                //Need to implement collapsing animation as well
                myListView.collapseGroup(groupPosition);
            } else {
                boolean autoScrollToExpandedGroup = false;
                myListView.expandGroup(groupPosition, autoScrollToExpandedGroup);
                setupLayoutAnimation(groupPosition);
                //
            }
            //telling the listView we have handled the group click, and don't want the default actions.
            return true;
        }

        private void setupLayoutAnimation(int groupPosition) {

            Animation slide_down = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.slide_down);

            myListView.getChildAt(groupPosition).setAnimation(slide_down);

            //myListView.setAnimation(slide_down);

        }
我还包括了“myListView.setAnimation(向下滑动);”,但如果我使用它并单击一个元素,则每个显示的元素(父元素+子元素)都会制作这个小动画,我只希望它用于子元素


如果这有什么区别的话,每个父级总是只有一个子级。

ExpandableListView不是很灵活。您最好创建一个自定义视图,在该视图中可以控制单击组时如何显示组的子级

要使自定义视图就位,还有一些工作要做,但这将使您比ExpandableListView具有更大的灵活性

您将需要两个新视图,一个父视图和一个子视图。父视图将继承其中一个视图组(使用LinearLayout或FrameLayout,因为您只有一个子视图),而子视图将基于您要显示的内容,它可以是文本视图或具有几个子视图的某个视图组。当您检测到对父对象的单击时,您将为其包含的子对象设置动画,并且如果需要,您可以使用界面将该单击事件传递到链的上游