如何为ExpandableListView

时间:2015-12-05 21:14:49

标签: android

我有一个带有滚动监听器的ExpandableListView,让用户通过在后台获取新数据无限向下滚动。

我希望我的子项(基本上是文本视图)具有交替的背景颜色。

这是我在我的适配器中所做的,以实现所需的结果:

   @Override
    public View getChildView(int groupPosition, final int childPosition, boolean isLastChild, View convertView, ViewGroup parent)
    {
        TextView textView = null;

        if (convertView == null) {
             convertView = inflater.inflate(R.layout.newsitem, null);
        }


        textView = (TextView) convertView.findViewById(R.id.newsContent);

        if ( (childPosition % 2) == 0 )
        {
            textView.setBackgroundColor(Color.parseColor("#123123"));
        }

        textView.setTypeface(fontContent);
        convertView.setTag(textView);


        if (groupPosition ==0 && parentItems.get(0).News == null)
        {
            textView.setText("uzgunuz henuz bugun icin haber yok :(");
        }
        else {
            child = parentItems.get(groupPosition).News.get(childPosition);
            textView.setText(groupPosition + "-" + childPosition +" "+ child.Content);
        }

        return convertView;
    }

当项目最初加载时,一切都很完美。

enter image description here

但是当我向下滚动时,我看到新项目具有随机背景颜色:

enter image description here

如果我继续向下滚动几次,我意识到即使最初加载了正确布局的项目也搞砸了:

enter image description here

请注意:我在expandablelistview初始化之后立即尝试手动加载新项而不使用滚动侦听器。结果是一样的。

截屏中每个子项目开头的数字也代表groupnumber-childnumber,它们都是正确的。所以按照我最初的想法排序没有任何问题。

我还尝试使用子项目的交替布局,而不是修改textview的背景颜色。没有工作。

如何实现所需的解决方案?我搞砸了哪里?

1 个答案:

答案 0 :(得分:1)

    if ( (childPosition % 2) == 0 )
    {
        textView.setBackgroundColor(Color.parseColor("#123123"));
    }

您忘记了else条件,将颜色设置回默认值。意见被回收;您需要在视图中更新所有内容,否则您将最终处于回收状态。