我有一个ExpandableListView可以正常工作,只有一个例外。
ExpandableListView的工作方式类似于我加载组(带有尺寸标注文本)和子项(带有我的对象文本),并在内部处理它们。如果选择了一个孩子,我会被打电话。但不要介于两者之间。
我从不更新它,而是执行this.recreate();。当数据更改时,ExpandableListView始终具有相同的数据。创建后被回调时,我只需按位置加载一次(带有我的DimensionItems文本),即可创建textView并在其上设置文本。
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.drawer_right_second, null);
TextView text = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
text.setText(DimensionItems[groupPosition].title);
if( Commands.AccountingObject.getObjectTotals(Commands.AccountingDimension.getDimensionByPositions(groupPosition))==0)
convertView.setBackgroundColor(Color.DKGRAY);
}
return convertView;
}
问题症状
如果我选择并扩大一个分组项目(将手指放在该分组项目上,以便可以看到孩子),则以下分组项目处于混乱状态。
我有八个分组项目0、1、2、3、4、5、6、7
如果我将第3组带两个孩子展开,我将得到一个0、1、2、3,c1,c2、6、7、5、4的实数列表?
在扩展阶段,我的代码中没有交互的地方,全部都在我代码外部的ExpandableListView.Java内部,并且调试器拒绝在其中放置断点。确实很难跟踪,并且在不受干扰的情况下,没有可以在代码中放置断点的入口点。
我需要做些什么吗,还是ExpandableListView库中的错误?
最佳答案
这是代码示例中的重写问题Bug
在经过长时间的学习后,对ExpandableListViews有了很多了解,但没有任何帮助,但最终它们还是像往常一样是一个简单的可怕错误,出现在我的鼻子前。发生重写问题,方括号内的某些代码应放在外部(每次运行)。我有点不好意思。
它应该看起来像这样,不需要id,只需要位置。
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
if (convertView == null) {
LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
convertView = inflater.inflate(R.layout.drawer_right_second, null);
}
TextView text = (TextView) convertView.findViewById(R.id.eventsListEventRowText);
text.setText(DimensionItems[groupPosition].title);
if( Commands.AccountingObject.getObjectTotals(Commands.AccountingDimension.getDimensionByPositions(groupPosition))==0)
convertView.setBackgroundColor(Color.DKGRAY);
else
convertView.setBackgroundColor(Color.BLUE);
return convertView;
}