|
|
@@ -1,33 +1,39 @@
|
|
|
package com.sheep.gamegroup.view.fragment;
|
|
|
|
|
|
+import android.support.v7.widget.LinearLayoutManager;
|
|
|
import android.support.v7.widget.RecyclerView;
|
|
|
import android.view.LayoutInflater;
|
|
|
import android.view.View;
|
|
|
import android.widget.ImageView;
|
|
|
import android.widget.TextView;
|
|
|
|
|
|
+import com.chad.library.adapter.base.BaseQuickAdapter;
|
|
|
+import com.chad.library.adapter.base.BaseViewHolder;
|
|
|
import com.haibin.calendarview.Calendar;
|
|
|
+import com.haibin.calendarview.CalendarLayout;
|
|
|
import com.haibin.calendarview.CalendarView;
|
|
|
+import com.haibin.calendarviewproject.custom.CustomMonthView;
|
|
|
+import com.haibin.calendarviewproject.custom.CustomWeekView;
|
|
|
import com.kfzs.appstore.utils.adapter.recyclerview.RecyclerViewAdapter;
|
|
|
import com.kfzs.appstore.utils.adapter.recyclerview.ViewHolder;
|
|
|
import com.sheep.gamegroup.model.api.ApiService;
|
|
|
import com.sheep.gamegroup.model.entity.BaseMessage;
|
|
|
-import com.sheep.gamegroup.model.entity.Lp;
|
|
|
-import com.sheep.gamegroup.model.entity.UserFocusLog;
|
|
|
import com.sheep.gamegroup.model.entity.UserFootprint;
|
|
|
+import com.sheep.gamegroup.util.ListUtil;
|
|
|
+import com.sheep.gamegroup.util.TimeUtil;
|
|
|
import com.sheep.gamegroup.util.ViewUtil;
|
|
|
-import com.sheep.gamegroup.util.viewHelper.LayoutParamsUtil;
|
|
|
-import com.sheep.gamegroup.view.customview.CalendarMonthView2;
|
|
|
import com.sheep.jiuyan.samllsheep.R;
|
|
|
import com.sheep.jiuyan.samllsheep.SheepApp;
|
|
|
-import com.sheep.jiuyan.samllsheep.utils.G;
|
|
|
import com.sheep.jiuyan.samllsheep.utils.TitleBarUtils;
|
|
|
|
|
|
import org.afinal.simplecache.ApiKey;
|
|
|
|
|
|
+import java.util.HashMap;
|
|
|
import java.util.List;
|
|
|
import java.util.Locale;
|
|
|
+import java.util.Map;
|
|
|
|
|
|
+import butterknife.BindView;
|
|
|
import io.reactivex.Observable;
|
|
|
|
|
|
/**
|
|
|
@@ -35,82 +41,124 @@ import io.reactivex.Observable;
|
|
|
* realicing@sina.com
|
|
|
* 小绵羊3.4.5新增--足迹
|
|
|
*/
|
|
|
-public class FgtFootprint extends BaseListFragment2<UserFootprint> {
|
|
|
- private CalendarView calendarView;
|
|
|
- private TextView header_foot_print_date_tv;
|
|
|
- private ImageView header_foot_print_last_iv;
|
|
|
- private View header_foot_print_last_v;
|
|
|
- private ImageView header_foot_print_next_iv;
|
|
|
- private View header_foot_print_next_v;
|
|
|
+public class FgtFootprint extends BaseListFragment4<UserFootprint> {
|
|
|
+ @BindView(R.id.header_foot_print_date_tv)
|
|
|
+ TextView header_foot_print_date_tv;
|
|
|
+ @BindView(R.id.header_foot_print_last_iv)
|
|
|
+ ImageView header_foot_print_last_iv;
|
|
|
+ @BindView(R.id.header_foot_print_last_v)
|
|
|
+ View header_foot_print_last_v;
|
|
|
+ @BindView(R.id.header_foot_print_next_iv)
|
|
|
+ ImageView header_foot_print_next_iv;
|
|
|
+ @BindView(R.id.header_foot_print_next_v)
|
|
|
+ View header_foot_print_next_v;
|
|
|
+
|
|
|
+ @BindView(R.id.fgt_foot_print_cv)
|
|
|
+ CalendarView mCalendarView;
|
|
|
+ @BindView(R.id.fgt_foot_print_cl)
|
|
|
+ CalendarLayout mCalendarLayout;
|
|
|
+ @BindView(R.id.fgt_foot_print_grv)
|
|
|
+ RecyclerView mRecyclerView;
|
|
|
+
|
|
|
+ @Override
|
|
|
+ public int getLayoutId() {
|
|
|
+ return R.layout.fgt_foot_print;
|
|
|
+ }
|
|
|
|
|
|
@Override
|
|
|
public void initView() {
|
|
|
- //添加 CalendarMonthView2 的引用,防止无引用,导致误删该类
|
|
|
- CalendarMonthView2.class.getSimpleName();
|
|
|
+ CustomMonthView.class.getSimpleName();
|
|
|
+ CustomWeekView.class.getSimpleName();
|
|
|
TitleBarUtils
|
|
|
.getInstance()
|
|
|
.setTitleFinish(getView(), activity)
|
|
|
.setTitle(getView(), "足迹");
|
|
|
- LayoutParamsUtil.resetLayoutParams(empty_view, new Lp().setTopMargin(G.getRealPix(320)));
|
|
|
- LayoutParamsUtil.resetLayoutParams(empty_view.findViewById(R.id.empty_view_msg), new Lp().setBottomMargin(0).setTopMargin(20));
|
|
|
- per_page = 100;
|
|
|
- view_list.setNestedScrollingEnabled(false);
|
|
|
- View view = LayoutInflater.from(activity).inflate(R.layout.header_foot_print, null);
|
|
|
- view_list.addHeaderView(view);
|
|
|
- calendarView = view.findViewById(R.id.calendarView);
|
|
|
- header_foot_print_date_tv = view.findViewById(R.id.header_foot_print_date_tv);
|
|
|
- header_foot_print_last_iv = view.findViewById(R.id.header_foot_print_last_iv);
|
|
|
- header_foot_print_last_v = view.findViewById(R.id.header_foot_print_last_v);
|
|
|
- header_foot_print_next_iv = view.findViewById(R.id.header_foot_print_next_iv);
|
|
|
- header_foot_print_next_v = view.findViewById(R.id.header_foot_print_next_v);
|
|
|
- maxYear = calendarView.getCurYear();
|
|
|
- maxYearMonth = calendarView.getCurMonth();
|
|
|
- maxYearDay = calendarView.getCurDay();
|
|
|
- calendarView.setRange(minYear, minYearMonth, minYearDay,
|
|
|
+
|
|
|
+ view_list = mRecyclerView;
|
|
|
+
|
|
|
+ mRecyclerView.setLayoutManager(new LinearLayoutManager(SheepApp.getInstance()));
|
|
|
+ mRecyclerView.setAdapter(getAdapter());
|
|
|
+
|
|
|
+ int maxYear = mCalendarView.getCurYear();
|
|
|
+ int maxYearMonth = mCalendarView.getCurMonth();
|
|
|
+ int maxYearDay = mCalendarView.getCurDay();
|
|
|
+ mCalendarView.setRange(2018, 10, 23,
|
|
|
maxYear, maxYearMonth, maxYearDay);
|
|
|
header_foot_print_last_v.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
|
//翻到上一个月
|
|
|
- calendarView.scrollToPre();
|
|
|
+ mCalendarView.scrollToPre(true);
|
|
|
}
|
|
|
});
|
|
|
header_foot_print_next_v.setOnClickListener(new View.OnClickListener() {
|
|
|
@Override
|
|
|
public void onClick(View view) {
|
|
|
//翻到下一个月
|
|
|
- calendarView.scrollToNext();
|
|
|
+ mCalendarView.scrollToNext(true);
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
- private int minYear = 2018;
|
|
|
- private int minYearMonth = 10;
|
|
|
- private int minYearDay = 23;
|
|
|
- private int maxYear;
|
|
|
- private int maxYearMonth;
|
|
|
- private int maxYearDay;
|
|
|
|
|
|
private void checkHeaderView(int year, int month) {
|
|
|
ViewUtil.setText(header_foot_print_date_tv, String.format(Locale.CHINA, "%d年%d月", year, month));
|
|
|
- boolean canScrollToPre = year >= minYear && month > minYearMonth;
|
|
|
+ Calendar firstCalendar = new Calendar();
|
|
|
+ firstCalendar.setYear(year);
|
|
|
+ firstCalendar.setMonth(month);
|
|
|
+ firstCalendar.setDay(1);
|
|
|
+ Calendar lastCalendar = new Calendar();
|
|
|
+ lastCalendar.setYear(year);
|
|
|
+ lastCalendar.setMonth(month);
|
|
|
+ lastCalendar.setDay(TimeUtil.getTotalDay(month));
|
|
|
+ checkHeaderView(firstCalendar, lastCalendar);
|
|
|
+ }
|
|
|
+ private void checkHeaderView(Calendar firstCalendar, Calendar lastCalendar){
|
|
|
+ Calendar minCalendar = mCalendarView.getMinRangeCalendar();
|
|
|
+ Calendar maxCalendar = mCalendarView.getMaxRangeCalendar();
|
|
|
+ boolean canScrollToPre = minCalendar.compareTo(firstCalendar) < 0;
|
|
|
ViewUtil.setEnabled(header_foot_print_last_iv, canScrollToPre);
|
|
|
ViewUtil.setEnabled(header_foot_print_last_v, canScrollToPre);
|
|
|
- boolean canScrollToNext = year <= maxYear && month < maxYearMonth;
|
|
|
+ boolean canScrollToNext = maxCalendar.compareTo(lastCalendar) > 0;
|
|
|
ViewUtil.setEnabled(header_foot_print_next_iv, canScrollToNext);
|
|
|
ViewUtil.setEnabled(header_foot_print_next_v, canScrollToNext);
|
|
|
}
|
|
|
+ private void checkHeaderView(List<Calendar> weekCalendars) {
|
|
|
+ Calendar firstCalendar = ListUtil.getItem(weekCalendars, 0);
|
|
|
+ Calendar lastCalendar = ListUtil.getLast(weekCalendars);
|
|
|
+ if(firstCalendar != null && lastCalendar != null) {
|
|
|
+ int year = firstCalendar.getYear();
|
|
|
+ int month = firstCalendar.getMonth();
|
|
|
+ ViewUtil.setText(header_foot_print_date_tv, String.format(Locale.CHINA, "%d年%d月", year, month));
|
|
|
+ checkHeaderView(firstCalendar, lastCalendar);
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
|
|
|
@Override
|
|
|
public void initListener() {
|
|
|
- super.initListener();
|
|
|
- calendarView.setOnMonthChangeListener(new CalendarView.OnMonthChangeListener() {
|
|
|
+ mCalendarView.setOnMonthChangeListener(new CalendarView.OnMonthChangeListener() {
|
|
|
@Override
|
|
|
public void onMonthChange(int year, int month) {
|
|
|
checkHeaderView(year, month);
|
|
|
}
|
|
|
});
|
|
|
- calendarView.setOnCalendarSelectListener(new CalendarView.OnCalendarSelectListener() {
|
|
|
+ mCalendarView.setOnWeekChangeListener(new CalendarView.OnWeekChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onWeekChange(List<Calendar> weekCalendars) {
|
|
|
+ checkHeaderView(weekCalendars);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ mCalendarView.setOnViewChangeListener(new CalendarView.OnViewChangeListener() {
|
|
|
+ @Override
|
|
|
+ public void onViewChange(boolean isMonthView) {
|
|
|
+ if(isMonthView){
|
|
|
+ checkHeaderView(mCalendarView.getCurYear(), mCalendarView.getCurMonth());
|
|
|
+ } else {
|
|
|
+ checkHeaderView(mCalendarView.getCurrentWeekCalendars());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ });
|
|
|
+ mCalendarView.setOnCalendarSelectListener(new CalendarView.OnCalendarSelectListener() {
|
|
|
@Override
|
|
|
public void onCalendarOutOfRange(Calendar calendar) {
|
|
|
|
|
|
@@ -125,10 +173,54 @@ public class FgtFootprint extends BaseListFragment2<UserFootprint> {
|
|
|
}
|
|
|
|
|
|
@Override
|
|
|
+ public void initData() {
|
|
|
+ super.initData();
|
|
|
+
|
|
|
+ int year = mCalendarView.getCurYear();
|
|
|
+ int month = mCalendarView.getCurMonth();
|
|
|
+
|
|
|
+ Map<String, Calendar> map = new HashMap<>();
|
|
|
+ map.put(getSchemeCalendar(year, month, 3, 0xFF40db25, "假").toString(),
|
|
|
+ getSchemeCalendar(year, month, 3, 0xFF40db25, "假"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 6, 0xFFe69138, "事").toString(),
|
|
|
+ getSchemeCalendar(year, month, 6, 0xFFe69138, "事"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 9, 0xFFdf1356, "议").toString(),
|
|
|
+ getSchemeCalendar(year, month, 9, 0xFFdf1356, "议"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 13, 0xFFedc56d, "记").toString(),
|
|
|
+ getSchemeCalendar(year, month, 13, 0xFFedc56d, "记"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 14, 0xFFedc56d, "记").toString(),
|
|
|
+ getSchemeCalendar(year, month, 14, 0xFFedc56d, "记"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 15, 0xFFaacc44, "假").toString(),
|
|
|
+ getSchemeCalendar(year, month, 15, 0xFFaacc44, "假"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 18, 0xFFbc13f0, "记").toString(),
|
|
|
+ getSchemeCalendar(year, month, 18, 0xFFbc13f0, "记"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 25, 0xFF13acf0, "假").toString(),
|
|
|
+ getSchemeCalendar(year, month, 25, 0xFF13acf0, "假"));
|
|
|
+ map.put(getSchemeCalendar(year, month, 27, 0xFF13acf0, "多").toString(),
|
|
|
+ getSchemeCalendar(year, month, 27, 0xFF13acf0, "多"));
|
|
|
+ //此方法在巨大的数据量上不影响遍历性能,推荐使用
|
|
|
+ mCalendarView.setSchemeDate(map);
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ private Calendar getSchemeCalendar(int year, int month, int day, int color, String text) {
|
|
|
+ Calendar calendar = new Calendar();
|
|
|
+ calendar.setYear(year);
|
|
|
+ calendar.setMonth(month);
|
|
|
+ calendar.setDay(day);
|
|
|
+ calendar.setSchemeColor(color);//如果单独标记颜色、则会使用这个颜色
|
|
|
+ calendar.setScheme(text);
|
|
|
+ calendar.addScheme(new Calendar.Scheme());
|
|
|
+ calendar.addScheme(0xFF008800, "假");
|
|
|
+ calendar.addScheme(0xFF008800, "节");
|
|
|
+ return calendar;
|
|
|
+ }
|
|
|
+
|
|
|
+ @Override
|
|
|
protected RecyclerView.Adapter getAdapter() {
|
|
|
- return new RecyclerViewAdapter<UserFootprint>(SheepApp.getInstance(), R.layout.item_my_focus, list) {
|
|
|
+ BaseQuickAdapter<UserFootprint, BaseViewHolder> adapter = new BaseQuickAdapter<UserFootprint, BaseViewHolder>(R.layout.item_my_focus, list) {
|
|
|
@Override
|
|
|
- public void convert(ViewHolder holder, UserFootprint item, int position) {
|
|
|
+ protected void convert(BaseViewHolder holder, UserFootprint item) {
|
|
|
ImageView item_my_focus_iv = holder.itemView.findViewById(R.id.item_my_focus_iv);
|
|
|
TextView item_my_focus_info_tv = holder.itemView.findViewById(R.id.item_my_focus_info_tv);
|
|
|
TextView item_my_focus_tv = holder.itemView.findViewById(R.id.item_my_focus_tv);
|
|
|
@@ -138,9 +230,13 @@ public class FgtFootprint extends BaseListFragment2<UserFootprint> {
|
|
|
ViewUtil.setText(item_my_focus_info_tv, item.getInfo());
|
|
|
}
|
|
|
};
|
|
|
+ View headerView = LayoutInflater.from(SheepApp.getInstance()).inflate(R.layout.header_foot_print, null);
|
|
|
+ adapter.addHeaderView(headerView);
|
|
|
+ return adapter;
|
|
|
}
|
|
|
|
|
|
private String date;
|
|
|
+
|
|
|
@Override
|
|
|
protected String getKey(int page, int per_page) {
|
|
|
return String.format(Locale.CHINA, "%s?page=%d&per_page=%d&date=%s", ApiKey.getUserFootPrintList, page, per_page, date);
|