改变 ListView 一行的颜色
Change color of one line of a ListView
我想制作一个 ListView
,其中一些元素的文本颜色为 WHITE
,另一些元素的文本颜色为 BLACK
。
这是我现在的代码:
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray);
listLead.setAdapter(arrayAdapter);
我可以修改 R.layout.row_lay
的 TextColor,但这会更改我的 ListView 的所有行的颜色。例如,我该如何做一条线一种颜色,另一条线另一种颜色?
有可能实现吗?同一个 ListView 中的不同 TextColor?
如果是怎么办?
您将覆盖 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
的自定义适配器 class,并像这样覆盖 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_textview_id
是您的 TextView
的 ID,whiteColoredPosition
是包含您要白色的 TextView 的 ListView 中的位置。
我想制作一个 ListView
,其中一些元素的文本颜色为 WHITE
,另一些元素的文本颜色为 BLACK
。
这是我现在的代码:
ArrayAdapter<String> arrayAdapter =
new ArrayAdapter<String>(My_Activity.this, R.layout.row_lay, R.id.textViewList, myarray);
listLead.setAdapter(arrayAdapter);
我可以修改 R.layout.row_lay
的 TextColor,但这会更改我的 ListView 的所有行的颜色。例如,我该如何做一条线一种颜色,另一条线另一种颜色?
有可能实现吗?同一个 ListView 中的不同 TextColor?
如果是怎么办?
您将覆盖 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
的自定义适配器 class,并像这样覆盖 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_textview_id
是您的 TextView
的 ID,whiteColoredPosition
是包含您要白色的 TextView 的 ListView 中的位置。