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 cc2fde9..b31975d 100644 --- a/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java +++ b/base/src/main/java/com/heyongrui/base/assist/ConfigConstants.java @@ -44,6 +44,7 @@ public class ConfigConstants { //module2模块路由路径 public static final String PATH_MODULE2_PROVIDER = "/module2/main/service"; public static final String PATH_GANK = "/module2/gank"; + public static final String PATH_LEISURE_READ = "/module2/leisureRead"; public static final String PATH_WELFARE = "/module2/welfare"; public static final String PATH_ABOUT = "/module2/about"; public static final String PATH_ENCOURAGE = "/module2/encourage"; diff --git a/base/src/main/res/drawable-xhdpi/ic_close.png b/base/src/main/res/drawable-xhdpi/ic_close.png new file mode 100644 index 0000000..3a10f32 Binary files /dev/null and b/base/src/main/res/drawable-xhdpi/ic_close.png differ diff --git a/base/src/main/res/layout/layout_spinner_dropdown_item.xml b/base/src/main/res/layout/layout_spinner_dropdown_item.xml index eaebe17..a5319d3 100644 --- a/base/src/main/res/layout/layout_spinner_dropdown_item.xml +++ b/base/src/main/res/layout/layout_spinner_dropdown_item.xml @@ -8,6 +8,6 @@ android:padding="@dimen/dp_10" android:singleLine="true" android:textColor="@color/text_color" - android:textSize="@dimen/sp_14"> + android:textSize="@dimen/sp_16"> \ No newline at end of file diff --git a/main/src/main/java/com/heyongrui/main/HomeFragment.java b/main/src/main/java/com/heyongrui/main/HomeFragment.java index cddc4c1..624cbb4 100644 --- a/main/src/main/java/com/heyongrui/main/HomeFragment.java +++ b/main/src/main/java/com/heyongrui/main/HomeFragment.java @@ -27,8 +27,7 @@ protected void initView(Bundle savedInstanceState) { addOnClickListeners(view -> { int id = view.getId(); if (id == R.id.tv_home) { -// ARouter.getInstance().build(ConfigConstants.PATH_USER).withBoolean(ConfigConstants.IS_NEED_INTERCEPT, true).navigation(); - ARouter.getInstance().build(ConfigConstants.PATH_H5).withString("h5Url", "https://ys.juan8014.cn/yin/").navigation(); + ARouter.getInstance().build(ConfigConstants.PATH_USER).withBoolean(ConfigConstants.IS_NEED_INTERCEPT, true).navigation(); } }, R.id.tv_home); } diff --git a/module/src/main/java/com/heyongrui/module/ModuleFragment.java b/module/src/main/java/com/heyongrui/module/ModuleFragment.java index 7a371e6..59bd601 100644 --- a/module/src/main/java/com/heyongrui/module/ModuleFragment.java +++ b/module/src/main/java/com/heyongrui/module/ModuleFragment.java @@ -82,6 +82,7 @@ private void initRecyclerView(RecyclerView recyclerView) { case 4://探索 break; case 5://音乐 + ARouter.getInstance().build(ConfigConstants.PATH_H5).withString("h5Url", "https://ys.juan8014.cn/yin/").navigation(); break; case 6://开眼 ARouter.getInstance().build(ConfigConstants.PATH_KAIYAN_LIST).withInt("type", 1).navigation(); diff --git a/module/src/main/java/com/heyongrui/module/h5/X5WebViewFragment.java b/module/src/main/java/com/heyongrui/module/h5/X5WebViewFragment.java index 2d407df..f3c8a7b 100644 --- a/module/src/main/java/com/heyongrui/module/h5/X5WebViewFragment.java +++ b/module/src/main/java/com/heyongrui/module/h5/X5WebViewFragment.java @@ -64,8 +64,10 @@ protected void initView(Bundle savedInstanceState) { int id = view.getId(); if (id == R.id.iv_back) { backLogic(); + } else if (id == R.id.iv_close) { + mActivity.finish(); } - }, R.id.iv_back); + }, R.id.iv_back, R.id.iv_close); } @Override diff --git a/module/src/main/res/layout/fragment_x5webview.xml b/module/src/main/res/layout/fragment_x5webview.xml index 87bdfe2..205a3b5 100644 --- a/module/src/main/res/layout/fragment_x5webview.xml +++ b/module/src/main/res/layout/fragment_x5webview.xml @@ -28,12 +28,24 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" /> + + diff --git a/module2/src/main/AndroidManifest.xml b/module2/src/main/AndroidManifest.xml index 23f4244..c92cbf2 100644 --- a/module2/src/main/AndroidManifest.xml +++ b/module2/src/main/AndroidManifest.xml @@ -14,5 +14,8 @@ + diff --git a/module2/src/main/debug/AndroidManifest.xml b/module2/src/main/debug/AndroidManifest.xml index b48cbb0..22db8ff 100644 --- a/module2/src/main/debug/AndroidManifest.xml +++ b/module2/src/main/debug/AndroidManifest.xml @@ -30,6 +30,9 @@ + diff --git a/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java b/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java index 513674d..1fd21d6 100644 --- a/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java +++ b/module2/src/main/java/com/heyongrui/module2/Module2Fragment.java @@ -137,6 +137,9 @@ private void initBalls() { case 6://拓展资源 ARouter.getInstance().build(ConfigConstants.PATH_GANK).withString("category", "拓展资源").navigation(); break; + case 8://瞎推荐 + ARouter.getInstance().build(ConfigConstants.PATH_LEISURE_READ).navigation(); + break; case 9://关于 ARouter.getInstance().build(ConfigConstants.PATH_ABOUT).navigation(); break; diff --git a/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionAdapter.java b/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionAdapter.java index 165f345..21e9b51 100644 --- a/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionAdapter.java +++ b/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionAdapter.java @@ -22,6 +22,7 @@ import com.heyongrui.base.utils.UiUtil; import com.heyongrui.module2.R; import com.heyongrui.module2.data.dto.GankDto; +import com.heyongrui.module2.data.dto.LeisureReadDto; import java.util.List; @@ -40,6 +41,7 @@ public Module2SectionAdapter(int sectionHeadResId, List da super(sectionHeadResId, data); addItemType(Module2SectionEntity.WELFARE, R.layout.recycle_item_welfare); addItemType(Module2SectionEntity.GANK, R.layout.recycle_item_android); + addItemType(Module2SectionEntity.LEISURE_READ, R.layout.recycle_item_leisure_read); } @Override @@ -55,9 +57,9 @@ protected void convert(BaseViewHolder helper, Module2SectionEntity item) { case Module2SectionEntity.WELFARE: { ConstraintLayout content = helper.getView(R.id.content); ImageView coverIv = helper.getView(R.id.iv); - GankDto.GankBean gankBean = item.getGankBean(); - if (gankBean == null) return; - String url = gankBean.getUrl(); + GankDto gankDto = item.getGankDto(); + if (gankDto == null) return; + String url = gankDto.getUrl(); RequestOptions options = new RequestOptions() .placeholder(R.drawable.placeholder) .error(R.drawable.placeholder_fail) @@ -82,11 +84,11 @@ public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition() { + @Override + public void onResourceReady(@NonNull Bitmap resource, @Nullable Transition transition) { + float ratio = (float) resource.getWidth() / resource.getHeight(); + ConstraintSet constraintSet = new ConstraintSet(); + constraintSet.clone(content); + constraintSet.setDimensionRatio(ivCover.getId(), ratio + ""); + constraintSet.applyTo(content); + ivCover.setImageBitmap(resource); + } + }); + tvTitle.setText(TextUtils.isEmpty(title) ? "" : title); + } + break; } } } diff --git a/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionEntity.java b/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionEntity.java index 3e9bc21..314be9d 100644 --- a/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionEntity.java +++ b/module2/src/main/java/com/heyongrui/module2/adapter/Module2SectionEntity.java @@ -3,6 +3,7 @@ import com.chad.library.adapter.base.entity.MultiItemEntity; import com.chad.library.adapter.base.entity.SectionMultiEntity; import com.heyongrui.module2.data.dto.GankDto; +import com.heyongrui.module2.data.dto.LeisureReadDto; import java.util.List; @@ -11,15 +12,17 @@ * 2019/6/25 18:13 */ public class Module2SectionEntity extends SectionMultiEntity implements MultiItemEntity { - + public static final int WELFARE = 100; public static final int GANK = 101; + public static final int LEISURE_READ = 102; private int itemType; private int spanSize; private Object object; - private GankDto.GankBean gankBean; + private GankDto gankDto; + private LeisureReadDto leisureReadDto; public Module2SectionEntity(boolean isHeader, String header, boolean isShow) { super(isHeader, header); @@ -40,8 +43,10 @@ public Module2SectionEntity(int itemType, int spanSize, Object object) { // if (o instanceof BannerDto) { // this.bannerDtoList = (List) object; // } - } else if (object instanceof GankDto.GankBean) { - this.gankBean = (GankDto.GankBean) object; + } else if (object instanceof GankDto) { + this.gankDto = (GankDto) object; + } else if (object instanceof LeisureReadDto) { + this.leisureReadDto = (LeisureReadDto) object; } } } @@ -71,11 +76,19 @@ public void setObject(Object object) { this.object = object; } - public GankDto.GankBean getGankBean() { - return gankBean; + public GankDto getGankDto() { + return gankDto; + } + + public void setGankDto(GankDto gankDto) { + this.gankDto = gankDto; + } + + public LeisureReadDto getLeisureReadDto() { + return leisureReadDto; } - public void setGankBean(GankDto.GankBean gankBean) { - this.gankBean = gankBean; + public void setLeisureReadDto(LeisureReadDto leisureReadDto) { + this.leisureReadDto = leisureReadDto; } } 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 43d6a58..c6d2eaa 100644 --- a/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java +++ b/module2/src/main/java/com/heyongrui/module2/dagger/Module2Component.java @@ -7,6 +7,7 @@ import com.heyongrui.base.dagger.AppComponent; import com.heyongrui.base.dagger.PerActivity; import com.heyongrui.module2.gank.presenter.GankPresenter; +import com.heyongrui.module2.gank.presenter.LeisureReadPresenter; import dagger.Component; @@ -24,4 +25,6 @@ public interface Module2Component { Fragment getFragment(); void inject(GankPresenter gankPresenter); + + void inject(LeisureReadPresenter leisureReadPresenter); } diff --git a/module2/src/main/java/com/heyongrui/module2/data/api/GankApi.java b/module2/src/main/java/com/heyongrui/module2/data/api/GankApi.java index f5c1e74..33cd756 100644 --- a/module2/src/main/java/com/heyongrui/module2/data/api/GankApi.java +++ b/module2/src/main/java/com/heyongrui/module2/data/api/GankApi.java @@ -1,6 +1,12 @@ package com.heyongrui.module2.data.api; import com.heyongrui.module2.data.dto.GankDto; +import com.heyongrui.module2.data.dto.GankResponse; +import com.heyongrui.module2.data.dto.LeisureReadCategoryDto; +import com.heyongrui.module2.data.dto.LeisureReadDto; +import com.heyongrui.module2.data.dto.LeisureReadSubCategoryDto; + +import java.util.List; import io.reactivex.Observable; import retrofit2.http.GET; @@ -13,10 +19,34 @@ public interface GankApi { /** + * 获取分类数据 + * * @param category 数据类型: 福利 | Android | iOS | 休息视频 | 拓展资源 | 前端 | all * @param per_page 请求个数: 数字,大于0 * @param page 第几页:数字,大于0 */ @GET("data/{category}/{per_page}/{page}") - Observable getGankCategory(@Path("category") String category, @Path("per_page") int per_page, @Path("page") int page); + Observable>> getGankCategory(@Path("category") String category, @Path("per_page") int per_page, @Path("page") int page); + + /** + * 获取闲读主分类 + */ + @GET("/api/xiandu/categories") + Observable>> getLeisureReadCategory(); + + /** + * 获取闲读子分类 + */ + @GET("/api/xiandu/category/{subCategory}") + Observable>> getLeisureReadSubCategory(@Path("subCategory") String subCategory); + + /** + * 获取闲读数据 + * + * @param id 后面可接受参数为子分类返回的id + * @param perPage 每页的个数 + * @param page 第几页,从1开始 + */ + @GET("/api/xiandu/data/id/{id}/count/{perPage}/page/{page}") + Observable>> getLeisureRead(@Path("id") String id, @Path("perPage") int perPage, @Path("page") int page); } diff --git a/module2/src/main/java/com/heyongrui/module2/data/dto/GankDto.java b/module2/src/main/java/com/heyongrui/module2/data/dto/GankDto.java index f306675..b63fab3 100644 --- a/module2/src/main/java/com/heyongrui/module2/data/dto/GankDto.java +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/GankDto.java @@ -1,114 +1,89 @@ package com.heyongrui.module2.data.dto; -import java.util.List; - /** * Created by Mr.He on 2019/3/10. */ public class GankDto { - - private boolean error; - private List results; - - public boolean isError() { - return error; + private String _id; + private String createdAt; + private String desc; + private String publishedAt; + private String source; + private String type; + private String url; + private boolean used; + private String who; + + public String get_id() { + return _id; } - public void setError(boolean error) { - this.error = error; + public void set_id(String _id) { + this._id = _id; } - public List getResults() { - return results; + public String getCreatedAt() { + return createdAt; } - public void setResults(List results) { - this.results = results; + public void setCreatedAt(String createdAt) { + this.createdAt = createdAt; } - public static class GankBean { - - private String _id; - private String createdAt; - private String desc; - private String publishedAt; - private String source; - private String type; - private String url; - private boolean used; - private String who; - - public String get_id() { - return _id; - } - - public void set_id(String _id) { - this._id = _id; - } - - public String getCreatedAt() { - return createdAt; - } - - public void setCreatedAt(String createdAt) { - this.createdAt = createdAt; - } - - public String getDesc() { - return desc; - } + public String getDesc() { + return desc; + } - public void setDesc(String desc) { - this.desc = desc; - } + public void setDesc(String desc) { + this.desc = desc; + } - public String getPublishedAt() { - return publishedAt; - } + public String getPublishedAt() { + return publishedAt; + } - public void setPublishedAt(String publishedAt) { - this.publishedAt = publishedAt; - } + public void setPublishedAt(String publishedAt) { + this.publishedAt = publishedAt; + } - public String getSource() { - return source; - } + public String getSource() { + return source; + } - public void setSource(String source) { - this.source = source; - } + public void setSource(String source) { + this.source = source; + } - public String getType() { - return type; - } + public String getType() { + return type; + } - public void setType(String type) { - this.type = type; - } + public void setType(String type) { + this.type = type; + } - public String getUrl() { - return url; - } + public String getUrl() { + return url; + } - public void setUrl(String url) { - this.url = url; - } + public void setUrl(String url) { + this.url = url; + } - public boolean isUsed() { - return used; - } + public boolean isUsed() { + return used; + } - public void setUsed(boolean used) { - this.used = used; - } + public void setUsed(boolean used) { + this.used = used; + } - public String getWho() { - return who; - } + public String getWho() { + return who; + } - public void setWho(String who) { - this.who = who; - } + public void setWho(String who) { + this.who = who; } } diff --git a/module2/src/main/java/com/heyongrui/module2/data/dto/GankResponse.kt b/module2/src/main/java/com/heyongrui/module2/data/dto/GankResponse.kt new file mode 100644 index 0000000..69052a9 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/GankResponse.kt @@ -0,0 +1,6 @@ +package com.heyongrui.module2.data.dto + +class GankResponse { + var error: Boolean? = false + var results: T? = null +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadCategoryDto.kt b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadCategoryDto.kt new file mode 100644 index 0000000..42dd2c6 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadCategoryDto.kt @@ -0,0 +1,37 @@ +package com.heyongrui.module2.data.dto + +import android.os.Parcel +import android.os.Parcelable + +data class LeisureReadCategoryDto(var _id: String? = "", + var en_name: String? = "", + var name: String? = "", + var rank: Int? = 0) : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readValue(Int::class.java.classLoader) as? Int) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(_id) + parcel.writeString(en_name) + parcel.writeString(name) + parcel.writeValue(rank) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): LeisureReadCategoryDto { + return LeisureReadCategoryDto(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/dto/LeisureReadDto.kt b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadDto.kt new file mode 100644 index 0000000..73645e2 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadDto.kt @@ -0,0 +1,114 @@ +package com.heyongrui.module2.data.dto + +import android.os.Parcel +import android.os.Parcelable + +data class LeisureReadDto( + var _id: String? = "", + var content: String? = "", + var cover: String? = "", + var crawled: Long, + var created_at: String? = "", + var deleted: Boolean, + var published_at: String? = "", + var raw: String? = "", + var site: Site? = null, + var title: String? = "", + var uid: String? = "", + var url: String? = "") : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readLong(), + parcel.readString(), + parcel.readByte() != 0.toByte(), + parcel.readString(), + parcel.readString(), + parcel.readParcelable(Site::class.java.classLoader), + parcel.readString(), + parcel.readString(), + parcel.readString()) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(_id) + parcel.writeString(content) + parcel.writeString(cover) + parcel.writeLong(crawled) + parcel.writeString(created_at) + parcel.writeByte(if (deleted) 1 else 0) + parcel.writeString(published_at) + parcel.writeString(raw) + parcel.writeParcelable(site, flags) + parcel.writeString(title) + parcel.writeString(uid) + parcel.writeString(url) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): LeisureReadDto { + return LeisureReadDto(parcel) + } + + override fun newArray(size: Int): Array { + return arrayOfNulls(size) + } + } + + data class Site( + var cat_cn: String? = "", + var cat_en: String? = "", + var desc: String? = "", + var feed_id: String? = "", + var icon: String? = "", + var id: String? = "", + var name: String? = "", + var subscribers: Int, + var type: String? = "", + var url: String? = "") : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readInt(), + parcel.readString(), + parcel.readString()) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(cat_cn) + parcel.writeString(cat_en) + parcel.writeString(desc) + parcel.writeString(feed_id) + parcel.writeString(icon) + parcel.writeString(id) + parcel.writeString(name) + parcel.writeInt(subscribers) + parcel.writeString(type) + parcel.writeString(url) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): Site { + return Site(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/dto/LeisureReadSubCategoryDto.kt b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadSubCategoryDto.kt new file mode 100644 index 0000000..9ea5d03 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/data/dto/LeisureReadSubCategoryDto.kt @@ -0,0 +1,40 @@ +package com.heyongrui.module2.data.dto + +import android.os.Parcel +import android.os.Parcelable + +data class LeisureReadSubCategoryDto(var _id: String? = "", + var created_at: String? = "", + var icon: String? = "", + var id: String? = "", + var title: String? = "") : Parcelable { + constructor(parcel: Parcel) : this( + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString(), + parcel.readString()) { + } + + override fun writeToParcel(parcel: Parcel, flags: Int) { + parcel.writeString(_id) + parcel.writeString(created_at) + parcel.writeString(icon) + parcel.writeString(id) + parcel.writeString(title) + } + + override fun describeContents(): Int { + return 0 + } + + companion object CREATOR : Parcelable.Creator { + override fun createFromParcel(parcel: Parcel): LeisureReadSubCategoryDto { + return LeisureReadSubCategoryDto(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/GankService.java b/module2/src/main/java/com/heyongrui/module2/data/service/GankService.java index a3e5a5a..021428e 100644 --- a/module2/src/main/java/com/heyongrui/module2/data/service/GankService.java +++ b/module2/src/main/java/com/heyongrui/module2/data/service/GankService.java @@ -2,9 +2,15 @@ import com.heyongrui.module2.data.api.GankApi; import com.heyongrui.module2.data.dto.GankDto; +import com.heyongrui.module2.data.dto.GankResponse; +import com.heyongrui.module2.data.dto.LeisureReadCategoryDto; +import com.heyongrui.module2.data.dto.LeisureReadDto; +import com.heyongrui.module2.data.dto.LeisureReadSubCategoryDto; import com.heyongrui.network.configure.RxHelper; import com.heyongrui.network.service.ApiService; +import java.util.List; + import io.reactivex.Observable; /** @@ -20,13 +26,48 @@ public GankService() { } /** + * 获取分类数据 + * * @param category 数据类型: 福利 | Android | iOS | 休息视频 | 拓展资源 | 前端 | all * @param perPage 请求个数: 数字,大于0 * @param page 第几页:数字,大于0 */ - public Observable getGankCategory(String category, int perPage, int page) { + public Observable>> getGankCategory(String category, int perPage, int page) { return ApiService.createApi(GankApi.class, BASE_URL_GANK) .getGankCategory(category, perPage, page) .compose(RxHelper.rxSchedulerHelper()); } + + /** + * 获取闲读主分类 + */ + public Observable>> getLeisureReadCategory() { + return ApiService.createApi(GankApi.class, BASE_URL_GANK) + .getLeisureReadCategory() + .compose(RxHelper.rxSchedulerHelper()); + } + + /** + * 获取闲读子分类 + * + * @param subCategory 后面可接受参数为主分类返回的en_name,例如【apps, wow, android,iOS】 + */ + public Observable>> getLeisureReadSubCategory(String subCategory) { + return ApiService.createApi(GankApi.class, BASE_URL_GANK) + .getLeisureReadSubCategory(subCategory) + .compose(RxHelper.rxSchedulerHelper()); + } + + /** + * 获取闲读数据 + * + * @param id 后面可接受参数为子分类返回的id + * @param perPage 每页的个数 + * @param page 第几页,从1开始 + */ + public Observable>> getLeisureRead(String id, int perPage, int page) { + return ApiService.createApi(GankApi.class, BASE_URL_GANK) + .getLeisureRead(id, perPage, page) + .compose(RxHelper.rxSchedulerHelper()); + } } diff --git a/module2/src/main/java/com/heyongrui/module2/gank/contract/GankContract.kt b/module2/src/main/java/com/heyongrui/module2/gank/contract/GankContract.kt index 53e6b44..c7c143f 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/contract/GankContract.kt +++ b/module2/src/main/java/com/heyongrui/module2/gank/contract/GankContract.kt @@ -12,7 +12,7 @@ import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener interface GankContract { interface View : BaseView { - fun getGankCategorySuccess(gankDto: GankDto) + fun getGankCategorySuccess(gankDtoList: List) fun getGankCategoryFail(errorCode: Int, errorMsg: String) } diff --git a/module2/src/main/java/com/heyongrui/module2/gank/contract/LeisureReadContract.kt b/module2/src/main/java/com/heyongrui/module2/gank/contract/LeisureReadContract.kt new file mode 100644 index 0000000..57dc37b --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/gank/contract/LeisureReadContract.kt @@ -0,0 +1,46 @@ +package com.heyongrui.module2.gank.contract + +import android.widget.AdapterView +import android.widget.Spinner +import androidx.recyclerview.widget.RecyclerView +import com.chad.library.adapter.base.BaseQuickAdapter +import com.google.android.material.tabs.TabLayout +import com.heyongrui.base.base.BasePresenter +import com.heyongrui.base.base.BaseView +import com.heyongrui.module2.adapter.Module2SectionAdapter +import com.heyongrui.module2.data.dto.LeisureReadCategoryDto +import com.heyongrui.module2.data.dto.LeisureReadDto +import com.heyongrui.module2.data.dto.LeisureReadSubCategoryDto +import com.scwang.smartrefresh.header.StoreHouseHeader +import com.scwang.smartrefresh.layout.SmartRefreshLayout +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener + +interface LeisureReadContract { + interface View : BaseView { + fun onSpinnerItemSelected(adapterView: AdapterView<*>, t: T?, position: Int) + + fun getLeisureReadCategorySuccess(leisureReadCategoryList: List) + + fun getLeisureReadSubCategorySuccess(leisureReadSubCategoryList: List) + + fun getLeisureReadSuccess(leisureReadList: List) + + fun getLeisureReadFail(errorCode: Int, errorMsg: String) + } + + abstract class Presenter : BasePresenter() { + abstract fun initSpinner(spinner: Spinner, dataList: List) + + abstract fun initSwipeRefresh(smartRefreshLayout: SmartRefreshLayout, storeHouseHeader: StoreHouseHeader, onRefreshLoadMoreListener: OnRefreshLoadMoreListener) + + abstract fun initRecyclerView(recyclerView: RecyclerView, listener: BaseQuickAdapter.OnItemClickListener): Module2SectionAdapter + + abstract fun setTagsData(tabLayout: TabLayout, tagsList: List, tabSelectedListener: TabLayout.BaseOnTabSelectedListener) + + abstract fun getLeisureReadCategory() + + abstract fun getLeisureReadSubCategory(subCategory: String) + + abstract fun getLeisureRead(id: String, perPage: Int, page: Int) + } +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/gank/contract/WelfareContract.java b/module2/src/main/java/com/heyongrui/module2/gank/contract/WelfareContract.java index 3b4426c..9ac6fba 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/contract/WelfareContract.java +++ b/module2/src/main/java/com/heyongrui/module2/gank/contract/WelfareContract.java @@ -5,9 +5,11 @@ import com.heyongrui.base.widget.imagewatcher.ImageWatcherHelper; import com.heyongrui.module2.data.dto.GankDto; +import java.util.List; + public interface WelfareContract { interface View extends BaseView { - void getWelfareSuccess(GankDto gankDto); + void getWelfareSuccess(List gankDtoList); void getWelfareFail(int errorCode, String errorMsg); } diff --git a/module2/src/main/java/com/heyongrui/module2/gank/presenter/GankPresenter.kt b/module2/src/main/java/com/heyongrui/module2/gank/presenter/GankPresenter.kt index 687de5c..f14f0e1 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/presenter/GankPresenter.kt +++ b/module2/src/main/java/com/heyongrui/module2/gank/presenter/GankPresenter.kt @@ -13,6 +13,7 @@ import com.heyongrui.module2.adapter.Module2SectionEntity import com.heyongrui.module2.dagger.DaggerModule2Component import com.heyongrui.module2.dagger.Module2Module import com.heyongrui.module2.data.dto.GankDto +import com.heyongrui.module2.data.dto.GankResponse import com.heyongrui.module2.data.service.GankService import com.heyongrui.module2.gank.contract.GankContract import com.heyongrui.network.configure.ResponseDisposable @@ -57,10 +58,10 @@ class GankPresenter : GankContract.Presenter() { override fun getGankCategory(category: String, perPage: Int, page: Int) { mRxManager.add(mGankService.getGankCategory(category, perPage, page).subscribeWith( - object : ResponseDisposable(mContext, true) { - override fun onSuccess(gankDto: GankDto) { + object : ResponseDisposable>>(mContext, true) { + override fun onSuccess(gankDtoList: GankResponse>) { if (mView != null) { - mView.getGankCategorySuccess(gankDto) + gankDtoList.results?.let { mView.getGankCategorySuccess(it) } } } diff --git a/module2/src/main/java/com/heyongrui/module2/gank/presenter/LeisureReadPresenter.kt b/module2/src/main/java/com/heyongrui/module2/gank/presenter/LeisureReadPresenter.kt new file mode 100644 index 0000000..f6d42c2 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/gank/presenter/LeisureReadPresenter.kt @@ -0,0 +1,172 @@ +package com.heyongrui.module2.gank.presenter + +import android.graphics.Color +import android.view.View +import android.widget.AdapterView +import android.widget.ArrayAdapter +import android.widget.Spinner +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.blankj.utilcode.util.ConvertUtils +import com.blankj.utilcode.util.ToastUtils +import com.chad.library.adapter.base.BaseQuickAdapter +import com.google.android.material.tabs.TabLayout +import com.heyongrui.base.app.BaseApplication +import com.heyongrui.base.widget.ReSpinner +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.GankResponse +import com.heyongrui.module2.data.dto.LeisureReadCategoryDto +import com.heyongrui.module2.data.dto.LeisureReadDto +import com.heyongrui.module2.data.dto.LeisureReadSubCategoryDto +import com.heyongrui.module2.data.service.GankService +import com.heyongrui.module2.gank.contract.LeisureReadContract +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 LeisureReadPresenter : LeisureReadContract.Presenter() { + + @Inject + lateinit var mGankService: GankService + + init { + DaggerModule2Component.builder().appComponent(BaseApplication.getAppComponent()).module2Module(Module2Module()).build().inject(this) + } + + override fun initSpinner(spinner: Spinner, dataList: List) { + val stringList = ArrayList() + if (null != dataList) { + for (t in dataList) { + if (t is String) { + stringList.add(t as String) + } else if (t is LeisureReadCategoryDto) { + t.name?.let { stringList.add(it) } + } + } + } + val adapter = ArrayAdapter(mContext, R.layout.layout_spinner_dropdown_item, stringList) + adapter.setDropDownViewResource(R.layout.layout_spinner_dropdown_item) + spinner.adapter = adapter + spinner.onItemSelectedListener = object : ReSpinner.OnReItemSelectedListener(true) { + override fun onReItemSelected(adapterView: AdapterView<*>, view: View, i: Int, l: Long) { + var t: T? = null + if (i >= 0) { + if (null != dataList) { + t = dataList[i] + } + } + if (null != mView) { + mView.onSpinnerItemSelected(adapterView, t, i) + } + } + } + spinner.post { + // spinner.dropDownWidth = spinner.width; + spinner.dropDownVerticalOffset = spinner.height + } + } + + 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() + val moduleSectionAdapter = Module2SectionAdapter(data) + recyclerView.layoutManager = LinearLayoutManager(mContext) + moduleSectionAdapter.bindToRecyclerView(recyclerView) + val dp1 = ConvertUtils.dp2px(1f) + recyclerView.addItemDecoration(RecycleViewItemDecoration(mContext, dp1, Color.TRANSPARENT)) + moduleSectionAdapter.setSpanSizeLookup({ gridLayoutManager, position -> data[position].getSpanSize() }) + if (null != listener) { + moduleSectionAdapter.setOnItemClickListener(listener) + } + return moduleSectionAdapter + } + + override fun setTagsData(tabLayout: TabLayout, tagsList: List, tabSelectedListener: TabLayout.BaseOnTabSelectedListener) { + if (tagsList == null) return + if (null != tabSelectedListener) { + tabLayout.addOnTabSelectedListener(tabSelectedListener) + } + tabLayout.removeAllTabs() + for (t in tagsList) { + tabLayout.addTab(creatTab(tabLayout, t)) + } + } + + private fun creatTab(tabLayout: TabLayout, tag: Any?): TabLayout.Tab { + val tagTab = tabLayout.newTab() + var title: String = "" + if (tag != null && tag is LeisureReadSubCategoryDto) { + title = tag?.title.toString() + } else if (tag != null && tag is String) { + title = tag + } + tagTab.text = title + tagTab.tag = tag + return tagTab + } + + override fun getLeisureReadCategory() { + mRxManager.add(mGankService.getLeisureReadCategory().subscribeWith( + object : ResponseDisposable>>(mContext, true) { + override fun onSuccess(leisureReadList: GankResponse>) { + if (mView != null) { + leisureReadList.results?.let { mView.getLeisureReadCategorySuccess(it) } + } + } + + override fun onFailure(errorCode: Int, errorMsg: String) { + ToastUtils.showShort(errorMsg) + } + })) + } + + override fun getLeisureReadSubCategory(subCategory: String) { + mRxManager.add(mGankService.getLeisureReadSubCategory(subCategory).subscribeWith( + object : ResponseDisposable>>(mContext, true) { + override fun onSuccess(leisureReadSubCategoryList: GankResponse>) { + if (mView != null) { + leisureReadSubCategoryList.results?.let { mView.getLeisureReadSubCategorySuccess(it) } + } + } + + override fun onFailure(errorCode: Int, errorMsg: String) { + ToastUtils.showShort(errorMsg) + } + })) + } + + override fun getLeisureRead(id: String, perPage: Int, page: Int) { + mRxManager.add(mGankService.getLeisureRead(id, perPage, page).subscribeWith( + object : ResponseDisposable>>(mContext, true) { + override fun onSuccess(leisureReadList: GankResponse>) { + if (mView != null) { + leisureReadList.results?.let { mView.getLeisureReadSuccess(it) } + } + } + + override fun onFailure(errorCode: Int, errorMsg: String) { + if (mView != null) { + mView.getLeisureReadFail(errorCode, errorMsg) + } + } + })) + } +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/gank/presenter/WelfarePresenter.java b/module2/src/main/java/com/heyongrui/module2/gank/presenter/WelfarePresenter.java index 51fc37a..e8f8487 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/presenter/WelfarePresenter.java +++ b/module2/src/main/java/com/heyongrui/module2/gank/presenter/WelfarePresenter.java @@ -14,10 +14,13 @@ import com.heyongrui.base.widget.imagewatcher.ImageWatcherHelper; import com.heyongrui.module2.adapter.Module2SectionEntity; import com.heyongrui.module2.data.dto.GankDto; +import com.heyongrui.module2.data.dto.GankResponse; import com.heyongrui.module2.data.service.GankService; import com.heyongrui.module2.gank.contract.WelfareContract; import com.heyongrui.network.configure.ResponseDisposable; +import java.util.List; + public class WelfarePresenter extends WelfareContract.Presenter { private GankService mGankService; @@ -35,9 +38,9 @@ public ImageWatcherHelper getImageWatcher() { public void load(Context context, Object o, ImageWatcher.LoadCallback lc) { if (o == null) return; if (o instanceof Module2SectionEntity) { - GankDto.GankBean gankBean = ((Module2SectionEntity) o).getGankBean(); - if (gankBean == null) return; - String url = gankBean.getUrl(); + GankDto gankDto = ((Module2SectionEntity) o).getGankDto(); + if (gankDto == null) return; + String url = gankDto.getUrl(); GlideApp.with(context).load(url) .into(new SimpleTarget() { @Override @@ -65,11 +68,11 @@ public void onLoadStarted(@Nullable Drawable placeholder) { @Override public void getWelfare(int perPage, int page) { mRxManager.add(mGankService.getGankCategory("福利", perPage, page).subscribeWith( - new ResponseDisposable(mContext, true) { + new ResponseDisposable>>(mContext, true) { @Override - protected void onSuccess(GankDto gankDto) { + protected void onSuccess(GankResponse> gankDto) { if (mView != null) { - mView.getWelfareSuccess(gankDto); + mView.getWelfareSuccess(gankDto.getResults()); } } diff --git a/module2/src/main/java/com/heyongrui/module2/gank/view/GankActivity.kt b/module2/src/main/java/com/heyongrui/module2/gank/view/GankActivity.kt index 467490d..a7b64c0 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/view/GankActivity.kt +++ b/module2/src/main/java/com/heyongrui/module2/gank/view/GankActivity.kt @@ -82,35 +82,32 @@ class GankActivity : BaseActivity(), GankContract.View, } override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) { - val gankBean = mGankAdapter.data.get(position).gankBean + val gankBean = mGankAdapter.data.get(position).gankDto ARouter.getInstance().build(ConfigConstants.PATH_H5).withString("h5Url", gankBean.url).navigation() } - override fun getGankCategorySuccess(gankDto: GankDto) { + override fun getGankCategorySuccess(gankDtoList: List) { resetRefreshLayout(true, true, false) val addDataList = ArrayList() - if (!gankDto.isError) { - val gankBeanList = gankDto.results - mIsLastPage = gankBeanList.size < mPerPage - for (gankBean in gankBeanList) { - var itemType: Int = Module2SectionEntity.GANK - when (gankBean.type) { - "Android" -> { - itemType = Module2SectionEntity.GANK - } - "iOS" -> { - } - "休息视频" -> { - } - "拓展资源" -> { - } - "前端" -> { - } - "all" -> { - } + mIsLastPage = gankDtoList.size < mPerPage + for (gankBean in gankDtoList) { + var itemType: Int = Module2SectionEntity.GANK + when (gankBean.type) { + "Android" -> { + itemType = Module2SectionEntity.GANK + } + "iOS" -> { + } + "休息视频" -> { + } + "拓展资源" -> { + } + "前端" -> { + } + "all" -> { } - addDataList.add(Module2SectionEntity(itemType, gankBean)) } + addDataList.add(Module2SectionEntity(itemType, gankBean)) } if (1 == mPage) { mGankAdapter.replaceData(addDataList) diff --git a/module2/src/main/java/com/heyongrui/module2/gank/view/LeisureReadActivity.kt b/module2/src/main/java/com/heyongrui/module2/gank/view/LeisureReadActivity.kt new file mode 100644 index 0000000..afcc110 --- /dev/null +++ b/module2/src/main/java/com/heyongrui/module2/gank/view/LeisureReadActivity.kt @@ -0,0 +1,156 @@ +package com.heyongrui.module2.gank.view + +import android.os.Bundle +import android.view.View +import android.widget.AdapterView +import androidx.core.content.ContextCompat +import com.alibaba.android.arouter.facade.annotation.Route +import com.alibaba.android.arouter.launcher.ARouter +import com.blankj.utilcode.util.ToastUtils +import com.chad.library.adapter.base.BaseQuickAdapter +import com.google.android.material.tabs.TabLayout +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.LeisureReadCategoryDto +import com.heyongrui.module2.data.dto.LeisureReadDto +import com.heyongrui.module2.data.dto.LeisureReadSubCategoryDto +import com.heyongrui.module2.gank.contract.LeisureReadContract +import com.heyongrui.module2.gank.presenter.LeisureReadPresenter +import com.scwang.smartrefresh.layout.api.RefreshLayout +import com.scwang.smartrefresh.layout.listener.OnRefreshLoadMoreListener +import kotlinx.android.synthetic.main.activity_leisure_read.* +import java.util.* + +@Route(path = ConfigConstants.PATH_LEISURE_READ) +class LeisureReadActivity : BaseActivity(), + LeisureReadContract.View, + View.OnClickListener, + OnRefreshLoadMoreListener, + BaseQuickAdapter.OnItemClickListener { + + private val mPerPage = 10 + private var mPage = 1 + private lateinit var mId: String + private var mIsLastPage: Boolean = false + lateinit var mLeisureReadAdapter: Module2SectionAdapter + + override fun getLayoutId(): Int { + return R.layout.activity_leisure_read + } + + override fun setPresenter(): LeisureReadContract.Presenter { + return LeisureReadPresenter() + } + + override fun onClick(p0: View?) { + if (p0 != null) { + if (p0 == iv_back) { + finish() + } + } + } + + override fun init(savedInstanceState: Bundle?) { + addOnClickListeners(this@LeisureReadActivity, iv_back) + + val tintDrawable = DrawableUtil.tintDrawable(this@LeisureReadActivity, R.drawable.ic_back, ContextCompat.getColor(this@LeisureReadActivity, R.color.background)) + iv_back.setImageDrawable(tintDrawable) + + mPresenter?.initSwipeRefresh(refresh_layout, store_house_header, this@LeisureReadActivity) + mLeisureReadAdapter = mPresenter.initRecyclerView(rlv_leisure_read, this@LeisureReadActivity) + + mPresenter?.getLeisureReadCategory() + } + + override fun onLoadMore(refreshLayout: RefreshLayout) { + if (mIsLastPage) { + resetRefreshLayout(true, true, true) + } else { + loadData(false) + } + } + + override fun onRefresh(refreshLayout: RefreshLayout) { + loadData(true) + } + + override fun onItemClick(adapter: BaseQuickAdapter<*, *>?, view: View?, position: Int) { + val leisureReadDto = mLeisureReadAdapter.data.get(position).leisureReadDto + ARouter.getInstance().build(ConfigConstants.PATH_H5).withString("h5Url", leisureReadDto.url).navigation() + } + + override fun onSpinnerItemSelected(adapterView: AdapterView<*>, t: T?, position: Int) { + val id = adapterView.id + if (id == R.id.spinner_category) { + if (null != t && t is LeisureReadCategoryDto) { + t.en_name?.let { mPresenter?.getLeisureReadSubCategory(it) } + } + } + } + + override fun getLeisureReadCategorySuccess(leisureReadCategoryList: List) { + mPresenter?.initSpinner(spinner_category, leisureReadCategoryList) + } + + override fun getLeisureReadSubCategorySuccess(leisureReadSubCategoryList: List) { + mPresenter?.setTagsData(tab_layout, leisureReadSubCategoryList, object : TabLayout.OnTabSelectedListener { + override fun onTabReselected(p0: TabLayout.Tab?) { + + } + + override fun onTabUnselected(p0: TabLayout.Tab?) { + } + + override fun onTabSelected(p0: TabLayout.Tab?) { + val tag = p0?.tag + if (tag is LeisureReadSubCategoryDto) { + mId = tag.id.toString() + loadData(true) + } + } + }) + } + + override fun getLeisureReadSuccess(leisureReadList: List) { + resetRefreshLayout(true, true, false) + val addDataList = ArrayList() + mIsLastPage = leisureReadList.size < mPerPage + for (leisureReadDto in leisureReadList) { + addDataList.add(Module2SectionEntity(Module2SectionEntity.LEISURE_READ, leisureReadDto)) + } + if (1 == mPage) { + rlv_leisure_read.smoothScrollToPosition(0) + mLeisureReadAdapter.replaceData(addDataList) + } else { + mLeisureReadAdapter.addData(addDataList) + } + } + + override fun getLeisureReadFail(errorCode: Int, errorMsg: String) { + ToastUtils.showShort(errorMsg) + resetRefreshLayout(true, true, false) + } + + private fun loadData(isClearData: Boolean) { + if (isClearData) { + mPage = 1 + } else { + mPage += 1 + } + mPresenter?.getLeisureRead(mId, mPerPage, mPage) + } + + private fun resetRefreshLayout(isFinishLoadMore: Boolean, isFinishRefresh: Boolean, noMoreData: Boolean) { + if (isFinishLoadMore) { + refresh_layout.finishLoadMore() + } + if (isFinishRefresh) { + refresh_layout.finishRefresh() + } + refresh_layout.setNoMoreData(noMoreData) + } +} \ No newline at end of file diff --git a/module2/src/main/java/com/heyongrui/module2/gank/view/WelfareActivity.java b/module2/src/main/java/com/heyongrui/module2/gank/view/WelfareActivity.java index ddad44c..5d69c4d 100644 --- a/module2/src/main/java/com/heyongrui/module2/gank/view/WelfareActivity.java +++ b/module2/src/main/java/com/heyongrui/module2/gank/view/WelfareActivity.java @@ -138,25 +138,20 @@ private void getWelfare(boolean isClearData) { } @Override - public void getWelfareSuccess(GankDto gankDto) { + public void getWelfareSuccess(List gankDtoList) { refreshLayout.finishLoadMore(); refreshLayout.finishRefresh(); refreshLayout.setNoMoreData(false); List addDataList = new ArrayList<>(); - if (gankDto != null) { - if (!gankDto.isError()) { - List gankBeanList = gankDto.getResults(); - if (gankBeanList != null && !gankBeanList.isEmpty()) { - if (gankBeanList.size() < mPerPage) { - mIsLastPage = true; - } - for (GankDto.GankBean gankBean : gankBeanList) { - addDataList.add(new Module2SectionEntity(Module2SectionEntity.WELFARE, gankBean)); - } - } else { - mIsLastPage = true; - } + if (gankDtoList != null && !gankDtoList.isEmpty()) { + if (gankDtoList.size() < mPerPage) { + mIsLastPage = true; } + for (GankDto gankBean : gankDtoList) { + addDataList.add(new Module2SectionEntity(Module2SectionEntity.WELFARE, gankBean)); + } + } else { + mIsLastPage = true; } mGankAdapter.addData(addDataList); } diff --git a/module2/src/main/res/layout/activity_leisure_read.xml b/module2/src/main/res/layout/activity_leisure_read.xml new file mode 100644 index 0000000..18c63ce --- /dev/null +++ b/module2/src/main/res/layout/activity_leisure_read.xml @@ -0,0 +1,95 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/module2/src/main/res/layout/recycle_item_leisure_read.xml b/module2/src/main/res/layout/recycle_item_leisure_read.xml new file mode 100644 index 0000000..c94aab3 --- /dev/null +++ b/module2/src/main/res/layout/recycle_item_leisure_read.xml @@ -0,0 +1,35 @@ + + + + + + + + \ No newline at end of file