我有一个带有图片和textview的listview
,我正在为名为MyArrayAdaptor
的类中的列表视图应用替代行颜色,该类扩展了ArrayAdapter<String>
当列表视图首先加载时,会出现替代的行颜色,但在滚动列表视图项后,颜色混合得更快,这是第二种颜色覆盖第一种颜色。
我该如何处理这个案子?
班级MyArrayAdaptor
;
public class MyArrayAdaptor extends ArrayAdapter<String> {
private Activity context;
private String[] text1;
private String[] image1;
private int TextViewID;
private int ImageViewID;
private int LoyoutID;
//private int[] colors = new int[] { 0xFFFFFFFF, 0xb2b2b2FF };
// private int[] colors = new int[] { 0x30FF0000, 0x300000FF };
private int[] colors = new int[] { 0x30FF0000, 0x30000000 };
public MyArrayAdaptor(Activity context,int id, String[] text1,String[] image,int textViewID, int imageViewID) {
super(context,id, text1);
this.context = context;
this.text1 = text1;
this.image1=image;
this.TextViewID=textViewID;
this.ImageViewID=imageViewID;
this.LoyoutID=id;
}
// static to save the reference to the outer class and to avoid access to
// any members of the containing class
static class ViewHolder {
public ImageView imageView;
public TextView textView;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// ViewHolder will buffer the assess to the individual fields of the row
// layout
ViewHolder holder;
View rowView = convertView;
if (rowView == null) {
LayoutInflater inflater = context.getLayoutInflater();
rowView = inflater.inflate(LoyoutID, null, true);
//color
if (position % 2 == 0) {
rowView.setBackgroundColor(colors[0]);
}
else {
rowView.setBackgroundColor(colors[1]);
}
holder = new ViewHolder();
holder.textView = (TextView) rowView.findViewById(TextViewID);
holder.imageView = (ImageView) rowView.findViewById(ImageViewID);
rowView.setTag(holder);
} else {
holder = (ViewHolder) rowView.getTag();
}
holder.textView.setText(text1[position]);
//holder.imageView.setImageDrawable(LoadImageFromWebOperations(image[position]));
holder.imageView.setBackgroundResource(R.drawable.icon);
return rowView;
}
private Drawable LoadImageFromWebOperations(String url)
{
try
{
InputStream is = (InputStream) new URL(url).getContent();
Drawable d = Drawable.createFromStream(is, "src name");
return d;
}catch (Exception e) {
System.out.println("Exc="+e);
return null;
}}
}
答案 0 :(得分:3)
我认为你应该将你的背景颜色设置在if(rowView == null)
条件之外。例如:在return rowView;
...
rowView.setBackgroundColor((position%2 == 0)? colors[0] : colors[1]);
return rowView;