Android ListView文字颜色白色

时间:2012-12-24 21:30:15

标签: android listview

我使用具有替代背景颜色的listview来设置自定义adapter。 问题是字符串(超过100多个字符串)的文本被设置为Color.BLACK的颜色,但在listview中,前几个字符串是白色的,其余字符串是黑色。 / p>

@Override  
    public View getView(int position, View convertView, ViewGroup parent) {  
    View view = super.getView(position, convertView, parent);  
    TextView tv = (TextView) super.getView(position, convertView, parent);
    int colorPos = position % color.length; 
    tv.setTextColor(Color.BLACK);
    view.setBackgroundColor(color[colorPos]);  
    return view;  
}  

我无法发现问题为什么第一个是白色然后其他是黑色的,是装载什么东西?因为我的文字(字符串)超过了100。

更新

这是listView代码:

MyAdapter adapter = new MyAdapter(this, 
    android.R.layout.simple_list_item_1,
    Strings.Advices);
setListAdapter(adapter);

字符串:

public class Strings {
    public static String Advices[] = {
       "advice",
       "advice",
       "adc",
       "add",
    };
}  

1 个答案:

答案 0 :(得分:3)

你的TextView什么都不做。通常,您需要使用findViewById()在行的布局中找到TextView。由于您使用的是android.R.layout.simple_list_item_1,这是一个TextView本身,我们可以跳过这一步:

@Override  
public View getView(int position, View convertView, ViewGroup parent) {  
    View view = super.getView(position, convertView, parent);  
    TextView tv = (TextView) view;
    int colorPos = position % color.length; 
    tv.setTextColor(Color.BLACK);
    view.setBackgroundColor(color[colorPos]);  
    return view;  
}  

但是任何内置适配器的getView()方法都非常通用,因此速度很慢......您应该编写自己的方法以充分利用Adapter的回收器和ViewHolder概念。请观看此Google Talk Turbo Charge Your UI(和/或World of ListView),以帮助您编写有效的适配器。

  

问题是字符串(超过100多个字符串)的文本被设置为Color.BLACK的颜色,但在列表视图中,前几个字符串是白色,其余字符串是黑色

我认为滚动ListView时会发生这种变化,直接链接到View循环器的行为方式。