我有一个带有滚动监听器的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;
}
当项目最初加载时,一切都很完美。
但是当我向下滚动时,我看到新项目具有随机背景颜色:
如果我继续向下滚动几次,我意识到即使最初加载了正确布局的项目也搞砸了:
请注意:我在expandablelistview初始化之后立即尝试手动加载新项而不使用滚动侦听器。结果是一样的。
截屏中每个子项目开头的数字也代表groupnumber-childnumber,它们都是正确的。所以按照我最初的想法排序没有任何问题。
我还尝试使用子项目的交替布局,而不是修改textview的背景颜色。没有工作。
如何实现所需的解决方案?我搞砸了哪里?
答案 0 :(得分:1)
if ( (childPosition % 2) == 0 )
{
textView.setBackgroundColor(Color.parseColor("#123123"));
}
您忘记了else
条件,将颜色设置回默认值。意见被回收;您需要在视图中更新所有内容,否则您将最终处于回收状态。