我正在用listview中列出的时间表编写一段代码。目的是在一定时间之间更改列表视图中某个项目的背景。例如,当它的3:40时,显示3:00-4:00的项目将具有绿色背景,当它变为4:00时,背景将返回白色。关于如何做到这一点的任何想法?到目前为止,这是我的相关代码。
final ListView schedule = (ListView) findViewById(R.id.schedule);
String[] myKeys = getResources().getStringArray(R.array.friday_schedule);
schedule.setAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, myKeys));
Calendar c = Calendar.getInstance();
final int hour = c.get(Calendar.HOUR);
if(hour<6&&hour>5)
{
schedule.item(0).setBackgroundColor(Color.CYAN);
}
另外,作为参考,这是this的类似问题。然后告诉我是否忘记附上我的一些代码。谢谢!
答案 0 :(得分:2)
考虑创建覆盖ArrayAdapter
的{{1}}子类。 getView()
会有这样的逻辑:
getView()
然后,在小时,请在适配器上调用...
final ListView schedule = (ListView) findViewById(R.id.schedule);
String[] myKeys = getResources().getStringArray(R.array.friday_schedule);
schedule.setAdapter(new ScheduleAdapter(this, android.R.layout.simple_list_item_1, myKeys));
...
public static class ScheduleAdapter extends ArrayAdapter<String> {
public ScheduleAdapter(Context context, int resource, String[] schedule) {
super(context, resource, schedule);
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = super.getView(position, convertView, parent);
// compare current clock hour to the hour this item represents
boolean isCurrentHour = position == ... <your logic goes here>
view.setBackgroundResource(isCurrentHour ? R.color.current_hour : R.color.normal_hour);
return view;
}
}
,notifyDataSetChanged()
将重新绘制颜色。
我将ListView
显示为您ScheduleAdapter
活动的内部类。