我使用具有替代背景颜色的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",
};
}
答案 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循环器的行为方式。