android - 如何在listview android中仅更改第二个单元格的背景颜色
问题描述
如何仅更改列表视图中第二个可见单元格的背景颜色?我只想更改列表视图中第二个可见单元格的背景颜色。有没有办法做到这一点。我的适配器类:
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;
}
}
和 customView 类:
public class CustomView extends View {
private String[] hoursList = getResources().getStringArray(R.array.hours);
private ListView listView;
private HourAdapter hourAdapter;
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;
}
}
);
当我在 ListView 上向下滚动时,其他一些 ListView 行也改变了背景颜色。
我只想更改 ListView 的第二行。
解决方案
我猜你的意思是你想为顶部的第二个可见项目而不是列表中的第二个项目着色。
如果是这种情况,您可以简单地将 else 语句添加到适配器类的 getView 方法中,以从不在第二个可见项目位置的文本视图中删除背景。您的代码将如下所示:
@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 == 1) {
view.setBackgroundResource(R.drawable.selected_color);
}
return view;
}
推荐阅读
- .net - 在 JScript 中,为什么我不能使用 HashTable 的枚举器或键?
- angular - 在兄弟姐妹Angular 6之间传递对象的最佳方式
- java - 从 JTextFields 将 Iteger 转换为字符串输入
- operating-system - 为什么我的安装程序在使用 /norestart 标志时不运行?
- javascript - maxLength is not a function
- html - HTML 水平滚动无法正常工作
- html - 使前面带有图标的文本与下一行的文本垂直对齐
- google-cloud-platform - Apache Beam 滑动窗口
- wakanda - 无法通过 Wakanda 4D Mobile 连接到 4D 服务器
- python - 使用 Python 将 SQL Server 数据库加载到内存中