From cae225833f7f2aebe6fe4934d9ddc92ad878d1a6 Mon Sep 17 00:00:00 2001 From: lambert Date: Fri, 6 Sep 2019 18:43:53 +0800 Subject: [PATCH] =?UTF-8?q?=E5=8A=A0=E5=85=A5=E5=8E=86=E5=8F=B2=E4=B8=8A?= =?UTF-8?q?=E7=9A=84=E4=BB=8A=E5=A4=A9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../base/assist/ConfigConstants.java | 1 + .../com/heyongrui/base/assist/RxManager.java | 4 +- module2/src/main/AndroidManifest.xml | 3 + module2/src/main/debug/AndroidManifest.xml | 3 + .../heyongrui/module2/Module2Fragment.java | 6 +- .../module2/dagger/Module2Component.java | 3 + .../module2/dagger/Module2Module.java | 13 ++ .../heyongrui/module2/data/api/ModuleApi.kt | 21 ++++ .../module2/data/dto/HistoryTodayDto.kt | 75 ++++++++++++ .../module2/data/service/ModuleService.kt | 21 ++++ .../grocery/view/TodayHistoryActivity.kt | 111 ++++++++++++++++++ .../res/drawable-xhdpi/ic_history_today.png | Bin 0 -> 1987 bytes .../res/layout/activity_today_history.xml | 59 ++++++++++ module2/src/main/res/values/strings.xml | 1 + 14 files changed, 319 insertions(+), 2 deletions(-) create mode 100644 module2/src/main/java/com/heyongrui/module2/data/api/ModuleApi.kt create mode 100644 module2/src/main/java/com/heyongrui/module2/data/dto/HistoryTodayDto.kt create mode 100644 module2/src/main/java/com/heyongrui/module2/data/service/ModuleService.kt create mode 100644 module2/src/main/java/com/heyongrui/module2/grocery/view/TodayHistoryActivity.kt create mode 100644 module2/src/main/res/drawable-xhdpi/ic_history_today.png create mode 100644 module2/src/main/res/layout/activity_today_history.xml diff --git a/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java b/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java index 2ec4cc6..ef98703 100644 --- a/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java +++ b/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java @@ -50,6 +50,7 @@ public class ConfigConstants { public static final String PATH_WELFARE = "/module2/welfare"; public static final String PATH_ABOUT = "/module2/about"; public static final String PATH_ENCOURAGE = "/module2/encourage"; + public static final String PATH_TODAY_HISTORY = "/module2/todayHistory"; //科大讯飞Iflytek模块路径 public static final String PATH_VOICE_DICATION_PROVIDER = "/iflytek/service"; } diff --git a/base/src/main/java/com/heyongrui/base/assist/RxManager.java b/base/src/main/java/com/heyongrui/base/assist/RxManager.java index ecfcc5b..b8a5f6c 100644 --- a/base/src/main/java/com/heyongrui/base/assist/RxManager.java +++ b/base/src/main/java/com/heyongrui/base/assist/RxManager.java @@ -1,11 +1,13 @@ package com.heyongrui.base.assist; +import javax.inject.Inject; + import io.reactivex.disposables.CompositeDisposable; import io.reactivex.disposables.Disposable; /** * 用于管理RxBus的事件和Rxjava相关代码的生命周期处理 - * Created by hpw on 16/10/27. + * Created by lambert on 18/10/27. */ public class RxManager { diff --git a/module2/src/main/AndroidManifest.xml b/module2/src/main/AndroidManifest.xml index c92cbf2..466826e 100644 --- a/module2/src/main/AndroidManifest.xml +++ b/module2/src/main/AndroidManifest.xml @@ -17,5 +17,8 @@ + diff --git a/module2/src/main/debug/AndroidManifest.xml b/module2/src/main/debug/AndroidManifest.xml index 22db8ff..315863a 100644 --- a/module2/src/main/debug/AndroidManifest.xml +++ b/module2/src/main/debug/AndroidManifest.xml @@ -33,6 +33,9 @@ + diff --git a/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java b/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java index 1fd21d6..82aaa44 100644 --- a/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java +++ b/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java @@ -131,6 +131,9 @@ private void initBalls() { case 3://IOS ARouter.getInstance().build(ConfigConstants.PATH_GANK).withString("category", "iOS").navigation(); break; + case 4://历史上的今天 + ARouter.getInstance().build(ConfigConstants.PATH_TODAY_HISTORY).navigation(); + break; case 5://前端 ARouter.getInstance().build(ConfigConstants.PATH_GANK).withString("category", "前端").navigation(); break; @@ -154,7 +157,8 @@ private List getMenuList() { gankMenuDtos.add(new GankMenuDto(getString(R.string.welfare), R.drawable.ic_welfare, 1)); gankMenuDtos.add(new GankMenuDto(getString(R.string.android), R.drawable.ic_android, 2)); gankMenuDtos.add(new GankMenuDto(getString(R.string.ios), R.drawable.ic_ios, 3)); - gankMenuDtos.add(new GankMenuDto(getString(R.string.rest_video), R.drawable.ic_video, 4)); + gankMenuDtos.add(new GankMenuDto(getString(R.string.today_history), R.drawable.ic_history_today, 4)); +// gankMenuDtos.add(new GankMenuDto(getString(R.string.rest_video), R.drawable.ic_video, 4)); gankMenuDtos.add(new GankMenuDto(getString(R.string.front_end), R.drawable.ic_js, 5)); gankMenuDtos.add(new GankMenuDto(getString(R.string.expand), R.drawable.ic_expand, 6)); gankMenuDtos.add(new GankMenuDto(getString(R.string.app), R.drawable.ic_app, 7)); diff --git a/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java b/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java index c6d2eaa..31fb2e0 100644 --- a/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java +++ b/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java @@ -8,6 +8,7 @@ import com.heyongrui.base.dagger.PerActivity; import com.heyongrui.module2.gank.presenter.GankPresenter; import com.heyongrui.module2.gank.presenter.LeisureReadPresenter; +import com.heyongrui.module2.grocery.view.TodayHistoryActivity; import dagger.Component; @@ -27,4 +28,6 @@ public interface Module2Component { void inject(GankPresenter gankPresenter); void inject(LeisureReadPresenter leisureReadPresenter); + + void inject(TodayHistoryActivity todayHistoryActivity); } diff --git a/module2/src/main/java/com/heyongrui/module2/dagger/Module2Module.java b/module2/src/main/java/com/heyongrui/module2/dagger/Module2Module.java index 5d1024d..4a9b461 100644 --- a/module2/src/main/java/com/heyongrui/module2/dagger/Module2Module.java +++ b/module2/src/main/java/com/heyongrui/module2/dagger/Module2Module.java @@ -6,8 +6,10 @@ import androidx.fragment.app.Fragment; +import com.heyongrui.base.assist.RxManager; import com.heyongrui.base.dagger.PerActivity; import com.heyongrui.module2.data.service.GankService; +import com.heyongrui.module2.data.service.ModuleService; import dagger.Module; import dagger.Provides; @@ -59,4 +61,15 @@ Context providesContext() { GankService provideGankService() { return new GankService(); } + + @Provides + @PerActivity + ModuleService provideModuleService() { + return new ModuleService(); + } + + @Provides + RxManager provideRxManager() { + return new RxManager(); + } } diff --git a/module2/src/main/java/com/heyongrui/module2/data/api/ModuleApi.kt b/module2/src/main/java/com/heyongrui/module2/data/api/ModuleApi.kt new file mode 100644 index 0000000..74125a3 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/api/ModuleApi.kt @@ -0,0 +1,21 @@ +package com.heyongrui.module2.data.api + +import com.heyongrui.module2.data.dto.HistoryTodayDto +import io.reactivex.Observable +import retrofit2.http.GET +import retrofit2.http.Query + +interface ModuleApi { + + /** + * 历史上的今天 + * + * @param day 查询的日期,例:0918(月日) + */ + @GET("history/query?duid=&day=0918") + fun getTodayHistory(@Query("key") key: String, + @Query("duid") duid: String, + @Query("day") day: String): Observable + + +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/data/dto/HistoryTodayDto.kt b/module2/src/main/java/com/heyongrui/module2/data/dto/HistoryTodayDto.kt new file mode 100644 index 0000000..440f688 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/HistoryTodayDto.kt @@ -0,0 +1,75 @@ +package com.heyongrui.module2.data.dto + +import android.os.Parcel +import android.os.Parcelable + +data class HistoryTodayDto( + var msg: String,//success + var retCode: String,//200 + var result: List) : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.createTypedArrayList(HistoryTodayBean)) { + } + + data class HistoryTodayBean( + var id: String,//569881b6590146d407332c49 + var title: String, + var date: String,//20190918 + var month: Int,//9 + var day: Int,//18 + var event: String) : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readInt(), + parcel.readInt(), + parcel.readString()) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(id) + parcel.writeString(title) + parcel.writeString(date) + parcel.writeInt(month) + parcel.writeInt(day) + parcel.writeString(event) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): HistoryTodayBean { + return HistoryTodayBean(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(msg) + parcel.writeString(retCode) + parcel.writeTypedList(result) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): HistoryTodayDto { + return HistoryTodayDto(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/data/service/ModuleService.kt b/module2/src/main/java/com/heyongrui/module2/data/service/ModuleService.kt new file mode 100644 index 0000000..0ac0bbb --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/service/ModuleService.kt @@ -0,0 +1,21 @@ +package com.heyongrui.module2.data.service + +import com.heyongrui.module2.data.api.ModuleApi +import com.heyongrui.module2.data.dto.HistoryTodayDto +import com.heyongrui.network.configure.RxHelper +import com.heyongrui.network.service.ApiService +import io.reactivex.Observable + +class ModuleService { + + /** + * 历史上的今天 + * + * @param day 查询的日期,例:0918(月日) + */ + fun getTodayHistory(day: String): Observable { + return ApiService.createApi(ModuleApi::class.java, "http://apicloud.mob.com/appstore/") + .getTodayHistory("moba6b6c6d6", "43275ff45b034bffaf6b9941a216fe6dbae31dc9", day) + .compose(RxHelper.rxSchedulerHelper()) + } +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/grocery/view/TodayHistoryActivity.kt b/module2/src/main/java/com/heyongrui/module2/grocery/view/TodayHistoryActivity.kt new file mode 100644 index 0000000..e97e5b2 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/grocery/view/TodayHistoryActivity.kt @@ -0,0 +1,111 @@ +package com.heyongrui.module2.grocery.view + +import android.graphics.Color +import android.os.Bundle +import android.view.View +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.alibaba.android.arouter.facade.annotation.Route +import com.blankj.utilcode.util.ConvertUtils +import com.blankj.utilcode.util.ToastUtils +import com.chad.library.adapter.base.BaseQuickAdapter +import com.heyongrui.base.app.BaseApplication +import com.heyongrui.base.assist.ConfigConstants +import com.heyongrui.base.assist.RxManager +import com.heyongrui.base.base.BaseActivity +import com.heyongrui.base.base.BasePresenter +import com.heyongrui.base.utils.DrawableUtil +import com.heyongrui.base.utils.TimeUtil +import com.heyongrui.base.widget.itemdecoration.RecycleViewItemDecoration +import com.heyongrui.module2.R +import com.heyongrui.module2.adapter.Module2SectionAdapter +import com.heyongrui.module2.adapter.Module2SectionEntity +import com.heyongrui.module2.dagger.DaggerModule2Component +import com.heyongrui.module2.dagger.Module2Module +import com.heyongrui.module2.data.dto.HistoryTodayDto +import com.heyongrui.module2.data.service.ModuleService +import com.heyongrui.network.configure.ResponseDisposable +import kotlinx.android.synthetic.main.activity_today_history.* +import java.util.* +import javax.inject.Inject + +@Route(path = ConfigConstants.PATH_TODAY_HISTORY) +class TodayHistoryActivity : BaseActivity>(), + View.OnClickListener, + BaseQuickAdapter.OnItemClickListener { + + @Inject + lateinit var mModuleService: ModuleService + @Inject + lateinit var mRxManager: RxManager + + lateinit var mTodayHistoryAdapter: Module2SectionAdapter + + fun adapterIsInit() = ::mTodayHistoryAdapter.isInitialized + + override fun initializeInjector() { + DaggerModule2Component.builder().appComponent(BaseApplication.getAppComponent()) + .module2Module(Module2Module(this@TodayHistoryActivity)).build().inject(this) + } + + override fun getLayoutId(): Int { + return R.layout.activity_today_history + } + + override fun onClick(p0: View?) { + if (p0 != null) { + if (p0 == iv_back) { + finish() + } + } + } + + override fun init(savedInstanceState: Bundle?) { + addOnClickListeners(this@TodayHistoryActivity, iv_back) + + val tintDrawable = DrawableUtil.tintDrawable(this@TodayHistoryActivity, + R.drawable.ic_back, ContextCompat.getColor(this@TodayHistoryActivity, R.color.background)) + iv_back.setImageDrawable(tintDrawable) + + mTodayHistoryAdapter = initRecyclerView(rlv_today_history, this) + + val day = TimeUtil.getDateString(Date(), "MMdd") + getTodayHistory(day) + } + + fun initRecyclerView(recyclerView: RecyclerView, listener: BaseQuickAdapter.OnItemClickListener): Module2SectionAdapter { + val data = ArrayList() + val moduleSectionAdapter = Module2SectionAdapter(data) + recyclerView.layoutManager = LinearLayoutManager(this@TodayHistoryActivity) + moduleSectionAdapter.bindToRecyclerView(recyclerView) + val dp1 = ConvertUtils.dp2px(1f) + recyclerView.addItemDecoration(RecycleViewItemDecoration(this@TodayHistoryActivity, dp1, Color.TRANSPARENT)) + moduleSectionAdapter.setSpanSizeLookup({ gridLayoutManager, position -> data[position].getSpanSize() }) + if (null != listener) { + moduleSectionAdapter.setOnItemClickListener(listener) + } + return moduleSectionAdapter + } + + override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) { + + } + + fun getTodayHistory(day: String) { + mRxManager.add(mModuleService.getTodayHistory(day).subscribeWith( + object : ResponseDisposable(this@TodayHistoryActivity, true) { + override fun onSuccess(historyTodayDto: HistoryTodayDto) { + setData(historyTodayDto) + } + + override fun onFailure(errorCode: Int, errorMsg: String) { + ToastUtils.showShort(errorMsg) + } + })) + } + + fun setData(historyTodayDto: HistoryTodayDto) { + if (!adapterIsInit()) return + } +} \ No newline at end of file diff --git a/module2/src/main/res/drawable-xhdpi/ic_history_today.png b/module2/src/main/res/drawable-xhdpi/ic_history_today.png new file mode 100644 index 0000000000000000000000000000000000000000..0b97e20a6c317034f12fcf8828a0bc44a7c8c5b2 GIT binary patch literal 1987 zcmV;!2R!(RP)s5FuS}9h1&qX$Ff_#!mR2m%)de!N)j>%!k&R06qtJR> zF=H%4kCSe83ceZt@!al zDjWp}M+%UFz(i1#n8W4ms0|x`v#WZ7Lxqk$lHbeSgZ+ol-;2LEbLWQF@KTcCB-V#} zo;AHG#&I+V0Ounm`4rI1br1&CEO2Rc{9Ga+6x3>hqT&b;*=pb%fZsSk7=XYLrwUpp z{4LBue(QE?RZ9A%oXatLjZ@QnREz;|J}U77Mdiv>0;k4^k&Rtd8Y(V#;VP9&2m&3e zO%b@ORuaem6!Fhy>(L&oAeR?jzLj{vNHZL=(^hS}*CO}P&?}Xs?8I3~fjG11H6wZc zLB<#WVdBZ{t=Y$4Z2KndR{)j(t^+6pa0$Rw0O|)-Mi+fd#LQ22zZv`&?cdJjRLJIr ze>}NU52Hmh0f5Wrb9Rzy&UzXLCG`##SbF0HvqVH0?Th*oNT?ft(!aOg?SUe<8iym`zY;l z``Y*nC{^kx00)^Wcy+ZTRtu&tGSS6*>RXY&&FXU_-Fq)(q70k9KT6ePScf9l$oW-ze_vzF{{ z`~Ih!n*by;A<$>s4_B(-y=dQf06#MUK;N9AvKl-QxcdnJMMeQ&E3o+W=&og>o)6IW zEZyuvqtn{OnMFGRY@IsE-6zm*Okz`Wn~P?)wH2SNk~V&&iQeW0;A&Y7rUdSu3gF5^ z2jJDv>BkNvEPhd2aAsDiEclhw#{ozmX#n&Ycd6h8W-k67>0MpPQlIsJcVf?Zrw1+` z{eh|^F-qj;rfnR(1zJ+?ihW&1R3xj4mc@$v>6mffpz{t@YE$)-!<>g6QI_)~L^HZ& zXnhs{hjbM+#(qeBimF7tR^;cb3jjm%fQ^xUr+3CZ7pTpr&jRq#mR#S%WyLv<99)taI3v|5Nf!7zhAa2CSdmQ z4btorx~jST`dwham&8WZ+7R(xvrZ?e3S2gd0_d07fm0Ixye-fN6vFGK8Q z$TXLs*I)6;cyIH9ZaqSIg*P$dh5bFgGMg+92zq85(!Z8q-{J4@!&NC1?PSNk7TR0l zS>G{uW3@jfk9PsnJb+0eq$!GybR7~B7v&%8@tAPBCYW#tqOPLyw_}kTPpqTAne|;@ z*XE#6$%igrtSb+TW(|h7r!8!)|N9Jgy+)4Ql6yG#xMZO{0ow4+1BR53tb zXGhoXW&^<5idSvP=ei}WcE^I59X*gbhf<|RRPqhv6w9dk-{srE@LfP(7s=`KWi3H3 zAEukFdhGDhC}TDNEG;q4~1Nq9vT<4%)O3?P(=2Rt>&-RJ2U9`UVm z<)1YIcs!0wTHBcY`RS7AUWIl}2z`D^>e1xoFA>E3JzwHeSL#D!#B?uVtv+5oc8LkB zI1TUreWb&}?$7f&`Gvmq3$lJ{+5;el2>?tDWH8TR#o}r2wzMfcG;=NZJeBlz)1hzk zuBY`x-y;B)e2zGJiF3&MWp3TOBel3v6ottVMXhxW%H;qu^+oTjoQjr!@Q>*hxGDyQ znSDxcjgpfr_(a}?m_}At{3+-+GAhfaO zlV#WH&O~p^++udi7z*eO0GiEwD?aDbEq`_6FZCa4V`uZf7jMleu;+^!#q9=VwL(eJ z9o=;dW%r3`OaP!2b+s6Tcv4NQ81BSx6Ik)6%38Tab1P}Z;}Uf$l1k|85mxjGs|-+r zDF7Olbi?qJ&UShF+g-Y8oc@b|0W$m4R6_yiQ_7n{85RIjpxB>zupZE#SI-o>{|A26 Vx2kZpibMba002ovPDHLkV1oRQz2^V` literal 0 HcmV?d00001 diff --git a/module2/src/main/res/layout/activity_today_history.xml b/module2/src/main/res/layout/activity_today_history.xml new file mode 100644 index 0000000..3fb9927 --- /dev/null +++ b/module2/src/main/res/layout/activity_today_history.xml @@ -0,0 +1,59 @@ + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/module2/src/main/res/values/strings.xml b/module2/src/main/res/values/strings.xml index 37be71a..a98421f 100644 --- a/module2/src/main/res/values/strings.xml +++ b/module2/src/main/res/values/strings.xml @@ -6,6 +6,7 @@ Android iOS 休息视频 + 历史上的今天 前端 拓展 App