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 0000000..0b97e20 Binary files /dev/null and b/module2/src/main/res/drawable-xhdpi/ic_history_today.png differ 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