Browse Source

fix: 📄使用CalendarView组件替代原生组件

dev-calendar-view
niushuai233 1 year ago
parent
commit
6e7cbba7db
  1. 75
      app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java
  2. 18
      app/src/main/res/layout/fragment_home.xml
  3. 24
      app/src/main/res/layout/item_list.xml

75
app/src/main/java/cc/niushuai/didicheck/ui/main/home/HomeFragment.java

@ -6,7 +6,6 @@ import android.view.Gravity; @@ -6,7 +6,6 @@ import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CalendarView;
import android.widget.TextView;
import androidx.annotation.NonNull;
@ -19,6 +18,9 @@ import androidx.recyclerview.widget.DividerItemDecoration; @@ -19,6 +18,9 @@ import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.haibin.calendarview.Calendar;
import com.haibin.calendarview.CalendarView;
import org.reactivestreams.Subscription;
import java.util.Collections;
@ -62,29 +64,42 @@ public class HomeFragment extends Fragment { @@ -62,29 +64,42 @@ public class HomeFragment extends Fragment {
fragmentHomeBinding = FragmentHomeBinding.inflate(inflater, container, false);
ConstraintLayout rootLayout = fragmentHomeBinding.getRoot();
TextView homeTitleTextView = fragmentHomeBinding.homeTitleTextView;
homeTitleTextView.setGravity(Gravity.CENTER);
homeViewModel.getTitle().observe(getViewLifecycleOwner(), value -> homeTitleTextView.setText(value));
homeTitleTextView.setText("未完待续...");
homeViewModel.setSelectDate(new Date());
initTextView();
initCalendarView();
initVerticalCalendarView();
// 默认查一次今天的数据
refreshDataListByDate(DateUtil.formatDate(new Date()));
initRecyleView();
return rootLayout;
}
private void initVerticalCalendarView() {
CalendarView homeMainCalendar = fragmentHomeBinding.homeMainCalendar;
homeMainCalendar.setDate(DateUtil.date().getTime());
homeMainCalendar.setOnDateChangeListener((calendarView, year, month, day) -> {
long date = calendarView.getDate();
String format = StrUtil.format("{}-{}-{}", year, month + 1, day);
Log.d("calendar_change", "tag = " + DateUtil.date(date).toDateStr() + ", ==>" + format);
// homeMainCalendar.setSchemeDate();
homeMainCalendar.setOnCalendarSelectListener(new CalendarView.OnCalendarSelectListener() {
@Override
public void onCalendarOutOfRange(Calendar calendar) {
Log.d("onCalendarOutOfRange", "" + calendar.getTimeInMillis());
}
// 缓存选择的日期
homeViewModel.setSelectDate(DateUtil.parseDate(format));
@Override
public void onCalendarSelect(Calendar calendar, boolean isClick) {
Log.d("onCalendarSelect", isClick + "---" + calendar.getTimeInMillis());
String dateStr = StrUtil.format("{}-{}-{}", calendar.getYear(), calendar.getMonth(), calendar.getDay());
homeViewModel.setSelectDate(DateUtil.parseDate(dateStr));
// 刷新数据
refreshDataListByDate(format);
refreshDataListByDate(dateStr);
}
});
}
// 默认查一次今天的数据
refreshDataListByDate(DateUtil.formatDate(new Date()));
private void initRecyleView() {
RecyclerView homeDataZoneRecyclerView = fragmentHomeBinding.homeDataZoneRecyclerView;
homeDataZoneRecyclerView.addItemDecoration(new DividerItemDecoration(this.getActivity(), DividerItemDecoration.VERTICAL));
DefaultItemAnimator itemAnimator = new DefaultItemAnimator();
@ -96,8 +111,32 @@ public class HomeFragment extends Fragment { @@ -96,8 +111,32 @@ public class HomeFragment extends Fragment {
fragmentHomeBinding.homeDataZoneRecyclerView.setAdapter(homeRecycleViewAdapter);
LinearLayoutManager layoutManager = new LinearLayoutManager(getActivity());
fragmentHomeBinding.homeDataZoneRecyclerView.setLayoutManager(layoutManager);
}
return rootLayout;
private void initCalendarView() {
// CalendarView homeMainCalendar = fragmentHomeBinding.homeMainCalendar;
// homeMainCalendar.setDate(DateUtil.date().getTime());
// homeMainCalendar.setOnDateChangeListener((calendarView, year, month, day) -> {
// long date = calendarView.getDate();
// String format = StrUtil.format("{}-{}-{}", year, month + 1, day);
// Log.d("calendar_change", "tag = " + DateUtil.date(date).toDateStr() + ", ==>" + format);
//
// // 缓存选择的日期
// homeViewModel.setSelectDate(DateUtil.parseDate(format));
//
// // 刷新数据
// refreshDataListByDate(format);
// });
}
private void initTextView() {
TextView homeTitleTextView = fragmentHomeBinding.homeTitleTextView;
homeTitleTextView.setGravity(Gravity.CENTER);
homeViewModel.getTitle().observe(getViewLifecycleOwner(), value -> homeTitleTextView.setText(value));
homeTitleTextView.setText("未完待续...");
homeViewModel.getSelectDate().observe(getViewLifecycleOwner(), value -> homeTitleTextView.setText(DateUtil.formatDate(value)));
homeViewModel.setSelectDate(new Date());
}
@Override

18
app/src/main/res/layout/fragment_home.xml

@ -15,8 +15,9 @@ @@ -15,8 +15,9 @@
app:layout_constraintHeight_percent="0.05"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<!--
<!--日历组件view-->
&lt;!&ndash;日历组件view&ndash;&gt;
<CalendarView
android:id="@+id/home_main_calendar"
android:layout_width="match_parent"
@ -25,6 +26,18 @@ @@ -25,6 +26,18 @@
app:layout_constraintLeft_toLeftOf="@id/home_title_textView"
app:layout_constraintTop_toBottomOf="@id/home_title_textView" />
-->
<com.haibin.calendarview.CalendarView
android:id="@+id/home_main_calendar"
android:layout_width="match_parent"
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.45"
app:layout_constraintLeft_toLeftOf="@id/home_title_textView"
app:layout_constraintTop_toBottomOf="@id/home_title_textView">
</com.haibin.calendarview.CalendarView>
<!--数据展示view-->
<androidx.recyclerview.widget.RecyclerView
android:id="@+id/home_dataZone_recyclerView"
@ -32,7 +45,6 @@ @@ -32,7 +45,6 @@
android:layout_height="0dp"
app:layout_constraintHeight_percent="0.5"
app:layout_constraintLeft_toLeftOf="@id/home_main_calendar"
app:layout_constraintTop_toBottomOf="@+id/home_main_calendar"
/>
app:layout_constraintTop_toBottomOf="@+id/home_main_calendar" />
</androidx.constraintlayout.widget.ConstraintLayout>

24
app/src/main/res/layout/item_list.xml

@ -4,22 +4,32 @@ @@ -4,22 +4,32 @@
android:layout_width="match_parent"
android:layout_height="match_parent">
<androidx.appcompat.widget.AppCompatImageView
android:id="@+id/item_list_icon"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:srcCompat="@mipmap/fab_icon_swimming" />
<TextView
android:id="@+id/item_list_title_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="29dp"
android:layout_marginTop="33dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
style="@style/TextAppearance.Material3.BodyLarge"
android:layout_marginStart="10dp"
android:layout_marginTop="30dp"
android:textSize="20sp"
app:layout_constraintLeft_toRightOf="@+id/item_list_icon"
app:layout_constraintStart_toStartOf="@+id/item_list_icon" />
<TextView
android:id="@+id/item_list_content_textView"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="4dp"
android:layout_marginTop="18dp"
app:layout_constraintStart_toStartOf="@id/item_list_title_textView"
android:layout_marginStart="10dp"
android:layout_marginTop="10dp"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/item_list_title_textView" />

Loading…
Cancel
Save