Browse Source

feat: 🐕 列表视图搞定

master
niushuai233 1 year ago
parent
commit
fcf1c412c8
  1. 2
      app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java
  2. 137
      app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java
  3. 17
      app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java
  4. 1
      app/src/main/res/layout/fragment_stat_list.xml
  5. 22
      app/src/main/res/layout/fragment_statistic.xml
  6. 4
      app/src/main/res/values/strings.xml

2
app/src/main/java/cc/niushuai/dididone/biz/dao/RecordDao.java

@ -45,6 +45,8 @@ public interface RecordDao { @@ -45,6 +45,8 @@ public interface RecordDao {
@Query("select check_date from t_record where deleted = 0 and check_date >= :startTime and check_date <= :endTime order by check_date asc")
Flowable<List<Record>> queryPointByDate(long startTime, long endTime);
@Query("select * from t_record where deleted = 0 and check_date >= :startDate and check_date <= :endDate order by check_date desc")
Flowable<List<Record>> queryByCheckDate(long startDate, long endDate);
@Query("select * from t_record where deleted = 0 and project_id = :projectId and check_date >= :startDate and check_date <= :endDate order by check_date desc")
Flowable<List<Record>> queryByProjectAndDate(Long projectId, long startDate, long endDate);
}

137
app/src/main/java/cc/niushuai/dididone/ui/statistic/StatisticFragment.java

@ -12,17 +12,20 @@ import androidx.lifecycle.ViewModelProvider; @@ -12,17 +12,20 @@ import androidx.lifecycle.ViewModelProvider;
import cc.niushuai.dididone.R;
import cc.niushuai.dididone.databinding.FragmentStatisticBinding;
import cc.niushuai.dididone.ui.base.BaseFragment;
import cc.niushuai.dididone.ui.statistic.charts.ListFragment;
import cc.niushuai.dididone.ui.statistic.charts.MonthFragment;
import cc.niushuai.dididone.ui.statistic.charts.OtherFragment;
import cc.niushuai.dididone.ui.statistic.charts.WeekFragment;
import cc.niushuai.dididone.util.XLog;
public class StatisticFragment extends BaseFragment implements View.OnClickListener {
private FragmentStatisticBinding binding;
//三个fragment
private MyFragment f1;
private MyFragment f2;
private MyFragment f3;
private MyFragment f4;
private ListFragment listFragment;
private WeekFragment weekFragment;
private MonthFragment monthFragment;
private OtherFragment otherFragment;
public View onCreateView(@NonNull LayoutInflater inflater,
ViewGroup container, Bundle savedInstanceState) {
@ -38,15 +41,15 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe @@ -38,15 +41,15 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe
@Override
public void init() {
initFragment1();
initListFragment();
}
@Override
public void setListeners() {
binding.btn1.setOnClickListener(this);
binding.btn2.setOnClickListener(this);
binding.btn3.setOnClickListener(this);
binding.btn4.setOnClickListener(this);
binding.statButtonList.setOnClickListener(this);
binding.statButtonWeek.setOnClickListener(this);
binding.statButtonMonth.setOnClickListener(this);
binding.statButtonOther.setOnClickListener(this);
}
@Override
@ -55,114 +58,96 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe @@ -55,114 +58,96 @@ public class StatisticFragment extends BaseFragment implements View.OnClickListe
binding = null;
}
//显示第一个fragment
private void initFragment1() {
//开启事务,fragment的控制是由事务来实现的
/**
* list维度
*/
private void initListFragment() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
//第一种方式(add),初始化fragment并添加到事务中,如果为null就new一个
if (f1 == null) {
f1 = new MyFragment("消息");
transaction.add(R.id.main_frame_layout, f1);
if (listFragment == null) {
listFragment = new ListFragment();
transaction.add(R.id.stat_main_frame_layout, listFragment);
}
//隐藏所有fragment
hideFragment(transaction);
//显示需要显示的fragment
transaction.show(f1);
transaction.show(listFragment);
//第二种方式(replace),初始化fragment
// if(f1 == null){
// f1 = new MyFragment("消息");
// }
// transaction.replace(R.id.main_frame_layout, f1);
//提交事务
transaction.commit();
}
//显示第二个fragment
private void initFragment2() {
/**
* 周维度
*/
private void initWeekFragment() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
if (f2 == null) {
f2 = new MyFragment("联系人");
transaction.add(R.id.main_frame_layout, f2);
if (weekFragment == null) {
weekFragment = new WeekFragment();
transaction.add(R.id.stat_main_frame_layout, weekFragment);
}
hideFragment(transaction);
transaction.show(f2);
// if(f2 == null) {
// f2 = new MyFragment("联系人");
// }
// transaction.replace(R.id.main_frame_layout, f2);
transaction.show(weekFragment);
transaction.commit();
}
//显示第三个fragment
private void initFragment3() {
/**
* 月维度视图
*/
private void initMonthFragment() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
if (f3 == null) {
f3 = new MyFragment("动态");
transaction.add(R.id.main_frame_layout, f3);
if (monthFragment == null) {
monthFragment = new MonthFragment();
transaction.add(R.id.stat_main_frame_layout, monthFragment);
}
hideFragment(transaction);
transaction.show(f3);
// if(f3 == null) {
// f3 = new MyFragment("动态");
// }
// transaction.replace(R.id.main_frame_layout, f3);
transaction.show(monthFragment);
transaction.commit();
}
//显示第三个fragment
private void initFragment4() {
/**
* 其他
*/
private void initOtherFragment() {
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction();
if (f4 == null) {
f4 = new MyFragment("其他");
transaction.add(R.id.main_frame_layout, f4);
if (otherFragment == null) {
otherFragment = new OtherFragment();
transaction.add(R.id.stat_main_frame_layout, otherFragment);
}
hideFragment(transaction);
transaction.show(f4);
// if(f3 == null) {
// f3 = new MyFragment("动态");
// }
// transaction.replace(R.id.main_frame_layout, f3);
transaction.show(otherFragment);
transaction.commit();
}
//隐藏所有的fragment
private void hideFragment(FragmentTransaction transaction) {
if (f1 != null) {
transaction.hide(f1);
if (listFragment != null) {
transaction.hide(listFragment);
}
if (f2 != null) {
transaction.hide(f2);
if (weekFragment != null) {
transaction.hide(weekFragment);
}
if (f3 != null) {
transaction.hide(f3);
if (monthFragment != null) {
transaction.hide(monthFragment);
}
if (f4 != null) {
transaction.hide(f4);
if (otherFragment != null) {
transaction.hide(otherFragment);
}
}
@Override
public void onClick(View v) {
if (v == binding.btn1) {
initFragment1();
} else if (v == binding.btn2) {
initFragment2();
} else if (v == binding.btn3) {
initFragment3();
} else if (v == binding.btn4) {
initFragment4();
if (v == binding.statButtonList) {
initListFragment();
} else if (v == binding.statButtonWeek) {
initWeekFragment();
} else if (v == binding.statButtonMonth) {
initMonthFragment();
} else if (v == binding.statButtonOther) {
initOtherFragment();
}
}
}

17
app/src/main/java/cc/niushuai/dididone/ui/statistic/charts/ListFragment.java

@ -66,6 +66,7 @@ public class ListFragment extends BaseChartFragment { @@ -66,6 +66,7 @@ public class ListFragment extends BaseChartFragment {
private void initSpinner(Spinner spinner) {
List<String> items = BizGlobal.getAvailableProjectList().stream().map(item -> item.getName()).collect(Collectors.toList());
items.add(0, "选择打卡项");
spinner.setAdapter(new ArrayAdapter<>(getContext(), androidx.appcompat.R.layout.support_simple_spinner_dropdown_item, items));
spinner.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
@ -83,11 +84,17 @@ public class ListFragment extends BaseChartFragment { @@ -83,11 +84,17 @@ public class ListFragment extends BaseChartFragment {
}
private void onConditionChange(int position, CharSequence startDate, CharSequence endDate) {
Flowable<List<Record>> listFlowable = DBManager.INSTANCE.recordDao().queryByProjectAndDate(
BizGlobal.getAvailableProjectList().get(position).getId(),
dateStr2mills(startDate.toString()),
dateStr2mills(endDate.toString()));
position--;
Flowable<List<Record>> listFlowable;
if (position < 0) {
// position小于0 表示选中第一个 即未选择打卡项 查询所有打卡项
listFlowable = DBManager.INSTANCE.recordDao().queryByCheckDate(dateStr2mills(startDate.toString()), dateStr2mills(endDate.toString()));
} else {
listFlowable = DBManager.INSTANCE.recordDao().queryByProjectAndDate(
BizGlobal.getAvailableProjectList().get(position).getId(),
dateStr2mills(startDate.toString()),
dateStr2mills(endDate.toString()));
}
listFlowable.subscribeOn(Schedulers.io()).subscribe(recordList -> {

1
app/src/main/res/layout/fragment_stat_list.xml

@ -14,6 +14,7 @@ @@ -14,6 +14,7 @@
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_marginLeft="20dp"
android:autofillHints="name"
android:layout_weight="0.3" />
<TextView

22
app/src/main/res/layout/fragment_statistic.xml

@ -7,46 +7,46 @@ @@ -7,46 +7,46 @@
<LinearLayout
android:layout_width="match_parent"
android:layout_height="48dp">
android:layout_height="50dp">
<Button
android:id="@+id/btn1"
android:id="@+id/stat_button_list"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="消息" />
android:text="@string/stat_header_list" />
<Button
android:id="@+id/btn2"
android:id="@+id/stat_button_week"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="联系人" />
android:text="@string/stat_header_week" />
<Button
android:id="@+id/btn3"
android:id="@+id/stat_button_month"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="动态" />
android:text="@string/stat_header_month" />
<Button
android:id="@+id/btn4"
android:id="@+id/stat_button_other"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:background="#ffffff"
android:text="其他" />
android:text="@string/stat_header_other" />
</LinearLayout>
<FrameLayout
android:id="@+id/main_frame_layout"
android:id="@+id/stat_main_frame_layout"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1"
android:background="#dddddd"></FrameLayout>
android:background="@color/gray_light_less" />
</LinearLayout>

4
app/src/main/res/values/strings.xml

@ -31,5 +31,9 @@ @@ -31,5 +31,9 @@
<string name="np_button_confirm">保存</string>
<string name="cp_color_confirm">选择该颜色</string>
<string name="cancel">取消</string>
<string name="stat_header_list">列表视图</string>
<string name="stat_header_week">周视图</string>
<string name="stat_header_month">月视图</string>
<string name="stat_header_other">其他</string>
</resources>
Loading…
Cancel
Save