在将这个问题标记为重复之前,我知道这个特定主题的线程很少,但是它们已经存在了几年(2012-13)并且Android API自那时起发生了变化。此外,我已尝试过这些决议,但要么他们不再工作,要么因为我将ExpandableListView
与ExpandableListAdapter
绑定(扩展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
中有它。
也许我对这个简单的问题感到困惑。有人可以指导我缺少的东西以及如何达到预期的效果吗?
答案 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();
}
我的事情,现在我不再需要所有那些有约束力的工作人员了。