2

我有一个listview使用adapter具有备用背景颜色的自定义。问题是作为字符串的文本(超过 100 多个字符串)被设置为的颜色,Color.BLACKlistview在前几个字符串中是白色的,然后是黑色的。

@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 个。

更新

这是列表视图代码:

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",
    };
}  
4

1 回答 1

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的方法都是非常通用的,因此速度很慢……你应该自己编写,以充分利用Adapter的回收器和ViewHolder的概念。请观看此 Google Talk Turbo 为您的 UI(和/或ListView 世界)充电,以帮助您编写高效的适配器。

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

我假设当您滚动 ListView 时会发生这种变化,这与 View 回收器的行为方式直接相关。

于 2012-12-24T21:35:28.560 回答