日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

本文介紹了如何在物料日歷視圖的選定日期中設置顏色的處理方法,對大家解決問題具有一定的參考價值,需要的朋友們下面隨著小編來一起學習吧!

問題描述

我有這樣的材料日歷視圖

private RecyclerView recycler_month_event_lists;
private FirebaseRecyclerAdapter adapter;

我是這樣分配的

recycler_month_event_lists = (RecyclerView) view.findViewById(R.id.event_recycler_view);
calendar_view = (MaterialCalendarView) view.findViewById(R.id.calendar_view);

我已經通過Firebase RecillerAdapter列出了各自月份的事件,如下所示

recycler_month_event_lists.setLayoutManager(new LinearLayoutManager(getActivity()));
    adapter = new FirebaseRecyclerAdapter<Event, EventViewHolder>(Event.class, R.layout.row_event_list,
            EventViewHolder.class, mRef.child("events").child("1").child(month)) {

        @Override
        protected void populateViewHolder(EventViewHolder viewHolder, Event model, int position) {
            List<CalendarDay> list = new ArrayList<CalendarDay>();
            ArrayList<Integer> day = model.getDate();
            ArrayList<Date> markedDates = new ArrayList<>();
            Calendar calendar = Calendar.getInstance();

            //generating ArrayList<Date> 
            for (int i = 0; i < day.size(); ++i) {
                Calendar cal = Calendar.getInstance();
                Integer year = cal.get(Calendar.YEAR);
                cal.set(Calendar.YEAR, year);
                cal.set(Calendar.DAY_OF_MONTH, day.get(i));
                cal.set(Calendar.MONTH, Integer.valueOf(month));
                Date newdate = cal.getTime();
                markedDates.add(newdate);
            }
            //adding those generated ArrayList<Dates> in List<CalendarDays>
            for (Date date : markedDates) {
                // might be a more elegant way to do this part, but this is very explicit
                int year = date.getYear();
                int month = date.getMonth() -1; // months are 0-based in Calendar
                int newday = date.getDay();

                calendar.set(year, month, newday);
                CalendarDay calendarDay = CalendarDay.from(calendar);
                list.add(calendarDay);
            }

            //adding list of CalendarDays
            calendarDays = list;

            //code to decorate selected dates
            calendar_view.addDecorators(new EventDecorator(Color.parseColor("#00ff00"), calendarDays));



            if (!day.isEmpty()) {

                for(int i = 0; i < day.size();i++){
                    int z = i+1;
                    if(i == 0){
                        from = "From"+ " " +day.get(i);
                    }

                    if(z == day.size()){
                        to = "to"+ " " +day.get(i);
                    }
                }


            }

            viewHolder.ev_title.setText(model.getTitle());
            viewHolder.ev_description.setText(model.getDescription());
            viewHolder.ev_date.setText(from + " " + to);
            Glide.with(getActivity()).load(model.getIcon()).into(viewHolder.ev_image);


        }
    };
    recycler_month_event_lists.setAdapter(adapter);

}

此處ArrayList<Integer> day = model.getDate();返回需要上色的日期。一天的日志是這樣的

D/arra: [1, 2, 3]

我不能給我的約會對象涂上顏色。我不知道我的代碼出了什么問題。

我使用了

calendar_view.addDecorators(new EventDecorator(Color.parseColor("#00ff00"), calendarDays));

裝飾選定的日子
我的EventDecorator是這樣的

public class EventDecorator implements DayViewDecorator {

private final int color;
private final HashSet<CalendarDay> dates;

public EventDecorator(int color, Collection<CalendarDay> dates) {
    this.color = color;
    this.dates = new HashSet<>(dates);
}

@Override
public boolean shouldDecorate(CalendarDay day) {
    return dates.contains(day);
}

@Override
public void decorate(DayViewFacade view) {
    view.addSpan(new DotSpan(5, color));
}
}

我的日歷天數是這樣的

private Collection<CalendarDay> calendarDays = new Collection<CalendarDay>() {
    @Override
    public boolean add(CalendarDay object) {
        return false;
    }

    @Override
    public boolean addAll(Collection<? extends CalendarDay> collection) {
        return false;
    }

    @Override
    public void clear() {

    }

    @Override
    public boolean contains(Object object) {
        return false;
    }

    @Override
    public boolean containsAll(Collection<?> collection) {
        return false;
    }

    @Override
    public boolean isEmpty() {
        return false;
    }

    @NonNull
    @Override
    public Iterator<CalendarDay> iterator() {
        return null;
    }

    @Override
    public boolean remove(Object object) {
        return false;
    }

    @Override
    public boolean removeAll(Collection<?> collection) {
        return false;
    }

    @Override
    public boolean retainAll(Collection<?> collection) {
        return false;
    }

    @Override
    public int size() {
        return 0;
    }

    @NonNull
    @Override
    public Object[] toArray() {
        return new Object[0];
    }

    @NonNull
    @Override
    public <T> T[] toArray(T[] array) {
        return null;
    }
};

推薦答案

我看過您的代碼,我確信問題出在EventDecorator中的decorate方法中。

view.addSpan(new DotSpan(5, color));

在材料日期上不起作用(或者至少不會按您希望的方式更改顏色)。

您可以使用

view.addSpan(new ForegroundColorSpan(color));

view.addSpan(new BackgroundColorSpan(color));

改為。

請確保為正確的日期調用public void decorate(DayViewFacade view)。如果您可以確保這一點,則設置顏色范圍應該有效。

這篇關于如何在物料日歷視圖的選定日期中設置顏色的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,

分享到:
標簽:日歷 日期 物料 視圖 設置 選定 顏色
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定