Auto Scrolling Clicked ExpandableListView组(与BaseExpandableListAdapter绑定)

时间:2016-03-15 03:08:26

标签: android expandablelistview

在将这个问题标记为重复之前,我知道这个特定主题的线程很少,但是它们已经存在了几年(2012-13)并且Android API自那时起发生了变化。此外,我已尝试过这些决议,但要么他们不再工作,要么因为我将ExpandableListViewExpandableListAdapter绑定(扩展BaseExpandableListAdapter),解决方案无效。

这是我的问题: 在ExpandableListView扩展ExpandableListAdapter的帮助下,我从静态文件中获取了一个BaseExpandableListAdapter个数据。 我在适配器中实现了getChildView()getGroupView()方法,以显示组项和子项。

我无法实现的是将所选单击项目平滑自动滚动到顶部。这样的事情:Auto scrolling in ExpandableListView

上面的线程(ListView.setSelection(position))中列出的解决方案在我的情况下不起作用。我试过了。类似地,(android:transcriptMode="disabled or smoothScroll or normal")或(ExpandableListView.smoothScrollToPositionFromTop(scrollTo, 0))之类的解决方案没有给出期望的结果。我不确定是什么问题。没有错误或警告或任何东西。

很少有线程会在适配器的ExpandableListView方法中调用您的onGroupExpand()。首先,这种方法不再存在,但我认为它们指的是现在的getChildView()方法。但是这里的项目是从View convertView中提取的,这是子项目的XML布局,我在此布局中没有ExpandableListView。我在我的MainActivity中有它。

也许我对这个简单的问题感到困惑。有人可以指导我缺少的东西以及如何达到预期的效果吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题。在孩子我只有一个TextView,绑定。总而言之,在滚动到“扩展组”的那一刻,由于绑定,这个TextView未知的高度。文本稍后设置。所以,我在我的适配器中手动设置:

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    InfoModelView info = (InfoModelView) getChild(groupPosition,childPosition);

    SubitemBinding binding = DataBindingUtil.inflate(LayoutInflater.from(this.context),R.layout.elv_child, parent, false);

    if (info != null){
        binding.setInfo(info);
        binding.lblListItem.setText(info.getDescription());
    }

    return binding.getRoot();
}

我的事情,现在我不再需要所有那些有约束力的工作人员了。