扩展

时间:2015-12-31 07:16:17

标签: java android expandablelistview

我有一个可行的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库中的错误?

1 个答案:

答案 0 :(得分:0)

这是代码示例中的重写问题

经过长时间的了解很多关于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;
}