Android Custom Listview显示错误的数据

时间:2014-04-08 12:41:11

标签: android android-listview

我使用BaseAdapter自定义列表视图,我想为行位置%5 == 0提供单独的颜色。但它也改变了一些不满足条件的其他行的颜色。以下是我的getView()。

public View getView(int position, View convertView, ViewGroup parent) {
    // TODO Auto-generated method stub
    View view=convertView;
    if(convertView==null){
        view=inflater.inflate(R.layout.groupl_ist, null);
    }
    TextView countryName=(TextView) view.findViewById(R.id.tvCountryText);
    ImageView countryImage=(ImageView) view.findViewById(R.id.imgCountry);
    String label=countryNames.get(position);
    countryName.setText(label);

    if(position%5==0){
        countryImage.setVisibility(LinearLayout.GONE);
        view.setBackgroundColor(Color.GREEN);
    }else{
        countryImage.setImageResource(R.drawable.ic_launcher);
    }

    return view;
} 

2 个答案:

答案 0 :(得分:2)

您似乎遇到了回收问题。您需要实现ViewHolder模式。有关如何实施的详细信息,请参阅this link

最终你要做的就是在向上和向下滚动时抓住视图,以便正确地重绘。

答案 1 :(得分:2)

我不确定为什么会发生您的问题,但尝试将原始颜色设置为不满足条件的行。此外,您应该实现ViewHolder模式。关于这种模式有很多帖子。

if(position%5==0){
    view.setBackgroundColor(Color.GREEN);
}else{
    view.setBackgroundColor(Color.WHITE);  //whatever color
}