Android 更改ListView中一行的颜色
我想制作一个Android 更改ListView中一行的颜色,android,listview,android-text-color,Android,Listview,Android Text Color,我想制作一个列表视图,其中一些元素具有白色文本颜色,而另一些元素具有黑色文本颜色 以下是我目前的代码: ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray); listLead.setAdapter(arrayAdapter); ArrayAdapter ArrayAdapte
列表视图
,其中一些元素具有白色
文本颜色,而另一些元素具有黑色
文本颜色
以下是我目前的代码:
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray);
listLead.setAdapter(arrayAdapter);
ArrayAdapter ArrayAdapter=
新的ArrayAdapter(My_Activity.this、R.layout.row_lay、R.id.textViewList、myarray);
listLead.setAdapter(arrayAdapter);
我可以修改我的R.layout.row\u lay
的文本颜色,但这会更改我的ListView中所有行的颜色。例如,我如何做一行一种颜色,另一行另一种颜色?
有可能做到这一点吗?同一列表视图中的不同文本颜色
如果是,如何执行?您将覆盖
ArrayAdapter的getView
方法
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
//your condition logic
v.setBackgroundColor(yourColor);
return v;
}
};
ArrayAdapter ArrayAdapter=new ArrayAdapter(My_Activity.this,R.layout.row_lay,R.id.textViewList,myarray){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=super.getView(位置、转换视图、父级);
//你的条件逻辑
v、 挫折背景色(yourColor);
返回v;
}
};
您将覆盖ArrayAdapter的getView
方法
ArrayAdapter<String> arrayAdapter = new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray) {
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View v = super.getView(position, convertView, parent);
//your condition logic
v.setBackgroundColor(yourColor);
return v;
}
};
ArrayAdapter ArrayAdapter=new ArrayAdapter(My_Activity.this,R.layout.row_lay,R.id.textViewList,myarray){
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图v=super.getView(位置、转换视图、父级);
//你的条件逻辑
v、 挫折背景色(yourColor);
返回v;
}
};
创建一个自定义适配器类,该类扩展了ArrayAdapter
,并覆盖getView
,如下所示:
@Override
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
TextView text = (TextView) v.findViewById(R.id.my_textview_id);
if (position == whiteColoredPosition){
text.setTextColor(Color.WHITE);
} else {
text.setTextColor(Color.BLACK);
}
return v;
}
其中,R.id.my\u textview\u id
是textview
的id,whiteColoredPosition
是列表视图中包含您希望为白色的textview的位置。创建一个自定义适配器类,该类扩展ArrayAdapter
,并覆盖getView
,如下所示:
@Override
public View getView(int position, View convertView, ViewGroup parent){
View v = super.getView(position, convertView, parent);
TextView text = (TextView) v.findViewById(R.id.my_textview_id);
if (position == whiteColoredPosition){
text.setTextColor(Color.WHITE);
} else {
text.setTextColor(Color.BLACK);
}
return v;
}
其中,R.id.my\u textview\u id
是您的textview
的id,whiteColoredPosition
是列表视图中包含您希望变为白色的textview的位置。由于视图循环,在不满足条件时必须将其设置回原始颜色,否则在滚动时,它们都会着色,就好像它们满足特殊条件一样。@NameSpace,没错,您必须将其设置回原来的值。但我不知道OP的条件逻辑,这就是为什么我评论为//您的条件逻辑
OP询问如何更改一行的颜色,您就是这样做的。我正在尝试您的答案,但有一个错误,问题上传了。@GMX因为您没有使用自定义适配器,您必须在声明适配器的地方编写内联。检查我的更新代码。由于视图循环,当不满足条件时,必须将其设置回原始颜色,否则当您滚动时,它们都会变为彩色,就像它们满足特殊条件一样。@命名空间,没错,您必须将其设置回原色。但我不知道OP的条件逻辑,这就是为什么我评论为//您的条件逻辑
OP询问如何更改一行的颜色,您就是这样做的。我正在尝试您的答案,但有一个错误,问题上传了。@GMX因为您没有使用自定义适配器,您必须在声明适配器的地方编写内联。检查我的更新代码。