我使用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;
}
答案 0 :(得分:2)
您似乎遇到了回收问题。您需要实现ViewHolder模式。有关如何实施的详细信息,请参阅this link。
最终你要做的就是在向上和向下滚动时抓住视图,以便正确地重绘。
答案 1 :(得分:2)
我不确定为什么会发生您的问题,但尝试将原始颜色设置为不满足条件的行。此外,您应该实现ViewHolder模式。关于这种模式有很多帖子。
if(position%5==0){
view.setBackgroundColor(Color.GREEN);
}else{
view.setBackgroundColor(Color.WHITE); //whatever color
}