【发布时间】:2020-12-03 15:11:29
【问题描述】:
如何根据位置更改 listView 项目的颜色?我不能解决这个问题大约 4 天。也许有人可以帮助我。
我有 customView 类:
public class CustomView extends View {
private String[] hoursList = getResources().getStringArray(R.array.hours); ;
private String[] minutesList = getResources().getStringArray(R.array.minutes);;
private String[] dayOfTimeList = getResources().getStringArray(R.array.timeOfDay);
private ListView listView;
private HourAdapter hourAdapter;
private MinuteAdapter minuteAdapter;
private DayOfTimeAdapter dayOfTimeAdapter;
public static int middlePosition;
public CustomView(Context context) {
super(context);
}
public CustomView(Context context, ViewGroup viewGroup) {
super(context);
inflate(context, R.layout.custom_test, viewGroup);
listView = viewGroup.findViewById(R.id.hours_list);
hourAdapter = new HourAdapter(context, hoursList);
listView.setAdapter(hourAdapter);
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
middlePosition = firstVisibleItem+1;
}
}
);
}
}
和适配器类:
public class HourAdapter extends BaseAdapter {
private LayoutInflater lInflater;
private String[] hoursValueList;
public HourAdapter(Context context, String[] hoursValueList{
lInflater = LayoutInflater.from(context);
this.hoursValueList = hoursValueList;
}
@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 textHours = view.findViewById(R.id.textRow);
textHours.setText(hoursValueList[position]);
if (position == CustomView.middlePosition) {
view.setBackgroundResource(R.drawable.selected_color);
}
return view;
}
}
What I need: when any element is in the middle position it has another color.
但是使用我现在拥有的代码,它不起作用。每个第二个元素都有颜色, 但我需要将任何位于中间位置的元素着色
【问题讨论】:
-
您遇到了什么样的问题?
-
我得到了图片中的结果。元素未绘制。
-
图片我看不到
-
对不起,我加了。
标签: android listview android-listview android-custom-view