-
Notifications
You must be signed in to change notification settings - Fork 4
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
c39f76d
commit 420aabb
Showing
13 changed files
with
418 additions
and
3 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
module2/src/main/java/com/heyongrui/module2/dagger/ActivityContext.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
package com.heyongrui.module2.dagger; | ||
|
||
import java.lang.annotation.Retention; | ||
import java.lang.annotation.RetentionPolicy; | ||
|
||
import javax.inject.Qualifier; | ||
|
||
@Qualifier | ||
@Retention(RetentionPolicy.RUNTIME) | ||
public @interface ActivityContext { | ||
|
||
} |
27 changes: 27 additions & 0 deletions
27
module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.heyongrui.module2.dagger; | ||
|
||
import android.app.Activity; | ||
|
||
import androidx.fragment.app.Fragment; | ||
|
||
import com.heyongrui.base.dagger.AppComponent; | ||
import com.heyongrui.base.dagger.PerActivity; | ||
import com.heyongrui.module2.gank.presenter.GankPresenter; | ||
|
||
import dagger.Component; | ||
|
||
/** | ||
* 2019/8/26 | ||
* lambert | ||
* 此Component依赖AppComponent,由于AppComponent使用了@Singleton,此处只能使用自定义@Scope(@PerActivity) | ||
*/ | ||
|
||
@PerActivity | ||
@Component(dependencies = AppComponent.class, modules = {Module2Module.class}) | ||
public interface Module2Component { | ||
Activity getActivity(); | ||
|
||
Fragment getFragment(); | ||
|
||
void inject(GankPresenter gankPresenter); | ||
} |
62 changes: 62 additions & 0 deletions
62
module2/src/main/java/com/heyongrui/module2/dagger/Module2Module.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
package com.heyongrui.module2.dagger; | ||
|
||
|
||
import android.app.Activity; | ||
import android.content.Context; | ||
|
||
import androidx.fragment.app.Fragment; | ||
|
||
import com.heyongrui.base.dagger.PerActivity; | ||
import com.heyongrui.module2.data.service.GankService; | ||
|
||
import dagger.Module; | ||
import dagger.Provides; | ||
|
||
@Module | ||
public class Module2Module { | ||
|
||
private Activity mActivity; | ||
private Fragment mFragment; | ||
|
||
public Module2Module() { | ||
} | ||
|
||
public Module2Module(Activity activity) { | ||
mActivity = activity; | ||
} | ||
|
||
public Module2Module(Fragment fragment) { | ||
this.mFragment = fragment; | ||
} | ||
|
||
@Provides | ||
Activity provideActivity() { | ||
return mActivity; | ||
} | ||
|
||
@Provides | ||
Fragment provideFragment() { | ||
return mFragment; | ||
} | ||
|
||
/* | ||
* @ActivityContext别名,通过在@Inject时加入这个自定义注解达到返回相同provider类型但是数据不同(eg:User() User(int age)) | ||
*/ | ||
@Provides | ||
@ActivityContext | ||
Context providesContext() { | ||
Context context = null; | ||
if (null != mActivity) { | ||
context = mActivity; | ||
} else if (null != mFragment) { | ||
context = mFragment.getContext(); | ||
} | ||
return context; | ||
} | ||
|
||
@Provides | ||
@PerActivity | ||
GankService provideGankService() { | ||
return new GankService(); | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
module2/src/main/java/com/heyongrui/module2/gank/contract/GankContract.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.heyongrui.module2.gank.contract | ||
|
||
import androidx.recyclerview.widget.RecyclerView | ||
import com.chad.library.adapter.base.BaseQuickAdapter | ||
import com.heyongrui.base.base.BasePresenter | ||
import com.heyongrui.base.base.BaseView | ||
import com.heyongrui.module2.adapter.Module2SectionAdapter | ||
import com.heyongrui.module2.data.dto.WelfareDto | ||
import com.scwang.smartrefresh.header.StoreHouseHeader | ||
import com.scwang.smartrefresh.layout.SmartRefreshLayout | ||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener | ||
|
||
interface GankContract { | ||
interface View : BaseView<Any> { | ||
fun getAndroidSuccess(welfareDto: WelfareDto) | ||
|
||
fun getAndroidFail(errorCode: Int, errorMsg: String) | ||
} | ||
|
||
abstract class Presenter : BasePresenter<View>() { | ||
abstract fun initSwipeRefresh(smartRefreshLayout: SmartRefreshLayout, storeHouseHeader: StoreHouseHeader, onRefreshLoadMoreListener: OnRefreshLoadMoreListener) | ||
|
||
abstract fun initRecyclerView(recyclerView: RecyclerView, listener: BaseQuickAdapter.OnItemClickListener): Module2SectionAdapter | ||
|
||
abstract fun getAndroid(perPage: Int, page: Int) | ||
} | ||
} |
74 changes: 74 additions & 0 deletions
74
module2/src/main/java/com/heyongrui/module2/gank/presenter/GankPresenter.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,74 @@ | ||
package com.heyongrui.module2.gank.presenter | ||
|
||
import androidx.core.content.ContextCompat | ||
import androidx.recyclerview.widget.LinearLayoutManager | ||
import androidx.recyclerview.widget.RecyclerView | ||
import com.blankj.utilcode.util.ConvertUtils | ||
import com.chad.library.adapter.base.BaseQuickAdapter | ||
import com.heyongrui.base.app.BaseApplication | ||
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.WelfareDto | ||
import com.heyongrui.module2.data.service.GankService | ||
import com.heyongrui.module2.gank.contract.GankContract | ||
import com.heyongrui.network.configure.ResponseDisposable | ||
import com.scwang.smartrefresh.header.StoreHouseHeader | ||
import com.scwang.smartrefresh.layout.SmartRefreshLayout | ||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener | ||
import java.util.* | ||
import javax.inject.Inject | ||
|
||
class GankPresenter : GankContract.Presenter() { | ||
|
||
@Inject | ||
lateinit var mGankService: GankService | ||
|
||
init { | ||
DaggerModule2Component.builder().appComponent(BaseApplication.getAppComponent()).module2Module(Module2Module()).build().inject(this) | ||
} | ||
|
||
override fun initSwipeRefresh(smartRefreshLayout: SmartRefreshLayout, storeHouseHeader: StoreHouseHeader, onRefreshLoadMoreListener: OnRefreshLoadMoreListener) { | ||
storeHouseHeader.setTextColor(ContextCompat.getColor(mContext, R.color.white)) | ||
smartRefreshLayout.setPrimaryColors(ContextCompat.getColor(mContext, R.color.colorPrimaryDark)) | ||
smartRefreshLayout.setDisableContentWhenRefresh(true)//是否在刷新的时候禁止列表的操作 | ||
smartRefreshLayout.setDisableContentWhenLoading(true)//是否在加载的时候禁止列表的操作 | ||
smartRefreshLayout.setEnableNestedScroll(true) | ||
smartRefreshLayout.setEnableLoadMoreWhenContentNotFull(true) | ||
smartRefreshLayout.setOnRefreshLoadMoreListener(onRefreshLoadMoreListener) | ||
} | ||
|
||
override fun initRecyclerView(recyclerView: RecyclerView, listener: BaseQuickAdapter.OnItemClickListener): Module2SectionAdapter { | ||
val data = ArrayList<Module2SectionEntity>() | ||
val moduleSectionAdapter = Module2SectionAdapter(data) | ||
recyclerView.layoutManager = LinearLayoutManager(mContext) | ||
moduleSectionAdapter.bindToRecyclerView(recyclerView) | ||
val dp10 = ConvertUtils.dp2px(10f) | ||
recyclerView.addItemDecoration(RecycleViewItemDecoration(mContext, dp10)) | ||
moduleSectionAdapter.setSpanSizeLookup({ gridLayoutManager, position -> data[position].getSpanSize() }) | ||
if (null != listener) { | ||
moduleSectionAdapter.setOnItemClickListener(listener) | ||
} | ||
return moduleSectionAdapter | ||
} | ||
|
||
override fun getAndroid(perPage: Int, page: Int) { | ||
mRxManager.add(mGankService.getAndroid(perPage, page).subscribeWith( | ||
object : ResponseDisposable<WelfareDto>(mContext, true) { | ||
override fun onSuccess(welfareDto: WelfareDto) { | ||
if (mView != null) { | ||
mView.getAndroidSuccess(welfareDto) | ||
} | ||
} | ||
|
||
override fun onFailure(errorCode: Int, errorMsg: String) { | ||
if (mView != null) { | ||
mView.getAndroidFail(errorCode, errorMsg) | ||
} | ||
} | ||
})) | ||
} | ||
} |
119 changes: 119 additions & 0 deletions
119
module2/src/main/java/com/heyongrui/module2/gank/view/GankActivity.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,119 @@ | ||
package com.heyongrui.module2.gank.view | ||
|
||
import android.os.Bundle | ||
import android.view.View | ||
import androidx.core.content.ContextCompat | ||
import com.alibaba.android.arouter.facade.annotation.Autowired | ||
import com.alibaba.android.arouter.facade.annotation.Route | ||
import com.blankj.utilcode.util.ToastUtils | ||
import com.chad.library.adapter.base.BaseQuickAdapter | ||
import com.heyongrui.base.assist.ConfigConstants | ||
import com.heyongrui.base.base.BaseActivity | ||
import com.heyongrui.base.utils.DrawableUtil | ||
import com.heyongrui.module2.R | ||
import com.heyongrui.module2.adapter.Module2SectionAdapter | ||
import com.heyongrui.module2.adapter.Module2SectionEntity | ||
import com.heyongrui.module2.data.dto.WelfareDto | ||
import com.heyongrui.module2.gank.contract.GankContract | ||
import com.heyongrui.module2.gank.presenter.GankPresenter | ||
import com.scwang.smartrefresh.layout.api.RefreshLayout | ||
import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener | ||
import kotlinx.android.synthetic.main.activity_gank.* | ||
import java.util.* | ||
|
||
@Route(path = ConfigConstants.PATH_GANK) | ||
class GankActivity : BaseActivity<GankContract.Presenter>(), GankContract.View, View.OnClickListener, BaseQuickAdapter.OnItemClickListener, OnRefreshLoadMoreListener { | ||
|
||
@JvmField | ||
@Autowired(name = "type") | ||
var mType: Int = 0 | ||
|
||
private val mPerPage = 10 | ||
private var mPage = 1 | ||
private var mIsLastPage: Boolean = false | ||
lateinit var mGankAdapter: Module2SectionAdapter | ||
|
||
override fun initImmersionBar() { | ||
super.initImmersionBar() | ||
// ImmersionBar.with(this).fullScreen(true).hideBar(BarHide.FLAG_HIDE_BAR).init() | ||
} | ||
|
||
override fun setPresenter(): GankContract.Presenter { | ||
return GankPresenter() | ||
} | ||
|
||
override fun onClick(p0: View?) { | ||
if (p0 != null) { | ||
if (p0 == iv_back) { | ||
finish() | ||
} | ||
} | ||
} | ||
|
||
override fun getLayoutId(): Int { | ||
return R.layout.activity_gank; | ||
} | ||
|
||
override fun init(savedInstanceState: Bundle?) { | ||
addOnClickListeners(this@GankActivity, iv_back) | ||
|
||
val tintDrawable = DrawableUtil.tintDrawable(this@GankActivity, R.drawable.ic_back, ContextCompat.getColor(this@GankActivity, R.color.background)) | ||
iv_back.setImageDrawable(tintDrawable) | ||
|
||
mPresenter.initSwipeRefresh(refresh_layout, store_house_header, this@GankActivity) | ||
mGankAdapter = mPresenter.initRecyclerView(rlv_gank, this@GankActivity) | ||
|
||
refresh_layout.autoRefresh() | ||
} | ||
|
||
private fun loadData() { | ||
mPresenter.getAndroid(mPerPage, mPage) | ||
} | ||
|
||
override fun onLoadMore(refreshLayout: RefreshLayout) { | ||
} | ||
|
||
override fun onRefresh(refreshLayout: RefreshLayout) { | ||
loadData() | ||
} | ||
|
||
override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) { | ||
|
||
} | ||
|
||
override fun getAndroidSuccess(welfareDto: WelfareDto) { | ||
resetRefreshLayout(true, true, false) | ||
val addDataList = ArrayList<Module2SectionEntity>() | ||
if (welfareDto != null) { | ||
if (!welfareDto.isError) { | ||
val welfareBeanList = welfareDto.results | ||
if (welfareBeanList != null && !welfareBeanList.isEmpty()) { | ||
if (welfareBeanList.size < mPerPage) { | ||
mIsLastPage = true | ||
} | ||
for (welfareBean in welfareBeanList) { | ||
addDataList.add(Module2SectionEntity(Module2SectionEntity.WELFARE, welfareBean)) | ||
} | ||
} else { | ||
mIsLastPage = true | ||
} | ||
} | ||
} | ||
mGankAdapter.replaceData(addDataList) | ||
} | ||
|
||
override fun getAndroidFail(errorCode: Int, errorMsg: String) { | ||
ToastUtils.showShort(errorMsg) | ||
resetRefreshLayout(true, true, false) | ||
} | ||
|
||
private fun resetRefreshLayout(isFinishLoadMore: Boolean, isFinishRefresh: Boolean, noMoreData: Boolean) { | ||
if (isFinishLoadMore) { | ||
refresh_layout.finishLoadMore() | ||
} | ||
if (isFinishRefresh) { | ||
refresh_layout.finishRefresh() | ||
} | ||
refresh_layout.setNoMoreData(noMoreData) | ||
} | ||
} |
Oops, something went wrong.