我正在尝试突出显示ListView中的某些字符串。因此,我尝试设置TextView的背景色,这是该ListView的实际元素,然而,下面使用setBackgroundResource和setBackgroundColor的代码不会产生任何更改,而是默认的颜色设置。我做错了什么?我也可以接受其他设计方案,如何在Listview中实现单个条目的高亮显示。
提前谢谢你!
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.d(LOG_TAG, "Enter onCreate");
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
dao = MealDAO.getInstance(this);
List<Meal> mealList = dao.getAllMeals();
mealListeAdapter = new ArrayAdapter<>(
this, // Die aktuelle Umgebung (diese Activity)
R.layout.meal_list_item, // ID der XML-Layout Datei
R.id.meal_list_item_textview, // ID des TextViews
mealList); // Beispieldaten in einer ArrayList
ListView mealListView = (ListView) findViewById(R.id.listview_mealliste);
mealListView.setAdapter(mealListeAdapter);
for(int i=0; i<mealList.size(); i++) {
Meal meal = mealList.get(i);
if(meal.toString().indexOf("(!)") > 0) {
TextView view = (TextView) mealListeAdapter.getView(i, null, null);
view.setBackgroundResource(R.color.colorAccent);
view.setBackgroundColor(ContextCompat.getColor(MainActivity.this, R.color.colorAccent));
}
}
...
}发布于 2016-09-04 21:57:34
在您的listview适配器上,您可以通过设置view / textview项目的颜色来更改getview函数中的颜色。在我的情况下,它可以用这个来完成。
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View rowView;
if (convertView == null) {
rowView = getActivity().getLayoutInflater().inflate(
R.layout.searchitemview, null);
} else {
rowView = convertView;
}
TextView firstTextView = (TextView) rowView
.findViewById(R.id.txtTitle);
firstTextView.setText((position + 1) + ". " +
items.get(position).first);
if ((position % 2) == 0) {
// convertView.setBackgroundColor(color_arr[position]);
rowView.setBackgroundResource(R.drawable.cell_shapegrey);
} else {
rowView.setBackgroundResource(R.drawable.cell_shape);
}
TextView batas = (TextView) rowView.findViewById(R.id.batasumur);
if (items.get(position).fiveth.contains("17")) {
batas.setBackgroundResource(R.drawable.rounded_red);
} else if (items.get(position).fiveth.contains("emaja")) {
batas.setBackgroundResource(R.drawable.rounded_oren);
} else {
batas.setBackgroundResource(R.drawable.rounded_green);
}
batas.setText(items.get(position).fiveth);
return rowView;
}https://stackoverflow.com/questions/39317396
复制相似问题