首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使listView中的一行始终具有相同的颜色

如何使listView中的一行始终具有相同的颜色
EN

Stack Overflow用户
提问于 2020-08-06 09:52:56
回答 1查看 81关注 0票数 0

我有CustomListView:

代码语言:javascript
运行
复制
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);

    }
}

和适配器类:

代码语言:javascript
运行
复制
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)总是蓝色(不管目前是什么元素在这个位置)。我用这个:

代码语言:javascript
运行
复制
if (view.getVisibility() == View.VISIBLE) {
                if (position ==2) {
                    view.setBackgroundColor(Color.BLUE);
                } else {
                    view.setBackgroundColor(Color.WHITE);
                }
            }

但这是变化的元素颜色。但是我需要只有细胞(可见元素的中间部分)总是蓝色的。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-06 10:50:19

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

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63281036

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档