如何使一行在列表视图总是有相同的颜色android



我有CustomListView:

public class CustomView extends View {
private String[] hoursList = getResources().getStringArray(R.array.hours); ;
private String[] minutesList = getResources().getStringArray(R.array.minutes);;
private ListView listView;
private HourAdapter hourAdapter;
private MinuteAdapter minuteAdapter;

public CustomView(Context context) {
super(context);
}
public CustomView(Context context, ViewGroup viewGroup) {
super(context);
inflate(context, R.layout.time_picker_test, viewGroup);
listView = viewGroup.findViewById(R.id.minutes_list);
minuteAdapter = new MinuteAdapter(context, minutesList);
listView.setAdapter(minuteAdapter);
listView = viewGroup.findViewById(R.id.hours_list);
hourAdapter = new HourAdapter(context, hoursList);
listView.setAdapter(hourAdapter);
}
}

和适配器类:

public class MinuteAdapter extends BaseAdapter {
private LayoutInflater lInflater;
private String[] minutesValueList;
public MinuteAdapter(Context context, String[] minutesValueList) {
lInflater = LayoutInflater.from(context);
this.minutesValueList = minutesValueList;
}
@Override
public int getCount() {
return minutesValueList.length;
}
@Override
public Object getItem(int position) {
return minutesValueList[position];
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if (view == null) {
view = lInflater.inflate(R.layout.row, parent, false);
TextView textMinutes = view.findViewById(R.id.textRow);
textMinutes.setText(minutesValueList[position]);
}
if (view.getVisibility() == View.VISIBLE) {
if (position ==2) {
view.setBackgroundColor(Color.BLUE);
} else {
view.setBackgroundColor(Color.WHITE);
}
}
TextView textMinutes = view.findViewById(R.id.textRow);
textMinutes.setText(minutesValueList[position]);
return view;
}
}

我需要,这里(见图(在中间位置(现在是11,2和PM(总是蓝色(无论什么元素当前在这个位置(。我用过这个:

if (view.getVisibility() == View.VISIBLE) {
if (position ==2) {
view.setBackgroundColor(Color.BLUE);
} else {
view.setBackgroundColor(Color.WHITE);
}
}

但是它改变了元素的颜色。但我需要唯一的细胞(可见元素的中间(总是蓝色的。

如果您希望中间行的中间单元格为蓝色,请将if (position ==2)更改为if (position ==1),数组中的索引从零开始,而不是从1 开始

最新更新