Skip to content

Commit

Permalink
feat(location): add home post article tab click event
Browse files Browse the repository at this point in the history
  • Loading branch information
xujiaji committed Sep 25, 2018
1 parent 36fe8dc commit 8735b3b
Show file tree
Hide file tree
Showing 6 changed files with 108 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,7 @@ public MainBlogPostsAdapter(MainBlogPostsViewModel viewModel) {
@Override
protected void onBinding(ItemBlogPostBinding binding) {
binding.setCallback((GeneralClickCallback<BlogPostBean>) mViewModel.mClickEvent::setValue);
binding.setTabCallback((GeneralClickCallback<Integer>) mViewModel.mClickTab::setValue);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.xujiaji.wanandroid.module.main.fragment.posts;

import android.arch.lifecycle.Observer;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.NonNull;
Expand All @@ -11,15 +12,20 @@
import com.xujiaji.wanandroid.databinding.LayoutRefreshBinding;
import com.xujiaji.wanandroid.helper.ActivityResultHelper;
import com.xujiaji.wanandroid.helper.RefreshLoadHelper;
import com.xujiaji.wanandroid.module.category_detail.CategoryDetailActivity;
import com.xujiaji.wanandroid.module.read.ReadActivity;
import com.xujiaji.wanandroid.repository.bean.BannerBean;
import com.xujiaji.wanandroid.repository.bean.TreeBean;
import com.xujiaji.wanandroid.repository.local.LocalData;
import com.xujiaji.wanandroid.repository.remote.DataCallbackImp;
import com.youth.banner.Banner;

import java.util.List;

import javax.inject.Inject;

import dagger.Lazy;

/**
* author: xujiaji
* created on: 2018/8/5 20:53
Expand All @@ -46,6 +52,9 @@ public class MainBlogPostsFragment extends BaseFragment<LayoutRefreshBinding, Ma
@Inject
Optional<Banner> mBanner;

@Inject
Lazy<LocalData> mLocalData;

private int mType;
private int mId;

Expand Down Expand Up @@ -94,6 +103,12 @@ public void onObserveViewModel(@NonNull MainBlogPostsViewModel viewModel) {
viewModel.setType(mType);
binding.setRefreshViewModel(viewModel);
viewModel.mClickEvent.observe(this, blogPostBean -> ReadActivity.launch(this, blogPostBean));
viewModel.mClickTab.observe(this, integer -> {
if (integer == null) return;
TreeBean treeBean = mLocalData.get().getTreeBeans(integer);
if (treeBean == null) return;
CategoryDetailActivity.launch(getActivity(), treeBean);
});
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ public class MainBlogPostsViewModel extends BaseRefreshViewModel<BlogPostBean> i

private int mType;
private int mId;
public final SingleLiveEvent<Integer> mClickTab = new SingleLiveEvent<>();
private final NetLiveEvent<List<BannerBean>> mBannerData = new NetLiveEvent<>();
private final SingleLiveEvent<RefreshLoadModel<MutableLiveData<Result<PageBean<BlogPostBean>>>>> mBlogPostsLiveData = new SingleLiveEvent<>();

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,82 @@
package com.xujiaji.wanandroid.repository.local;

import android.arch.lifecycle.Observer;
import android.support.annotation.Nullable;
import android.text.TextUtils;

import com.google.gson.Gson;
import com.google.gson.reflect.TypeToken;
import com.xujiaji.wanandroid.R;
import com.xujiaji.wanandroid.base.App;
import com.xujiaji.wanandroid.helper.PrefHelper;
import com.xujiaji.wanandroid.helper.ToastHelper;
import com.xujiaji.wanandroid.repository.bean.Result;
import com.xujiaji.wanandroid.repository.bean.TreeBean;
import com.xujiaji.wanandroid.repository.remote.Net;

import java.util.List;

import javax.inject.Inject;
import javax.inject.Singleton;

import dagger.Lazy;

/**
* author: xujiaji
* created on: 2018/9/25 23:20
* description:
*/

@Singleton
public class LocalData {
private final Gson gson = new Gson();

@Inject
Lazy<Net> net;

@Inject
public LocalData() {}

/**
* 体系本地数据
*/
public static final String POST_TREE_JSON = "tree/json";

public void putTreeJsons(List<TreeBean> treeBeans) {
String json = gson.toJson(treeBeans);
PrefHelper.set(POST_TREE_JSON, json);
}

public List<TreeBean> getAllTreeBeans() {
String json = PrefHelper.getString(POST_TREE_JSON);
if (TextUtils.isEmpty(json)) {
net.get().getPostTree().observeForever(new Observer<Result<List<TreeBean>>>() {
@Override
public void onChanged(@Nullable Result<List<TreeBean>> listResult) {
if (listResult == null || listResult.getErrorCode() != Net.ZERO) {
return;
}
putTreeJsons(listResult.getData());
}
});
ToastHelper.info(App.getInstance().getString(R.string.start_init_tree_data));
return null;
}
return gson.fromJson(json, new TypeToken<List<TreeBean>>() {}.getType());
}

public TreeBean getTreeBeans(int id) {
List<TreeBean> treeBeans = getAllTreeBeans();
if (treeBeans == null) return null;
for (TreeBean tb : treeBeans) {
List<TreeBean> tbs = tb.getChildren();
for (TreeBean t : tbs) {
if (t.getId() == id) {
tb.setCheckedChild(t);
return tb;
}
}
}
return null;
}
}
10 changes: 8 additions & 2 deletions app/src/main/res/layout/item_blog_post.xml
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,10 @@
name="callback"
type="com.xujiaji.mvvmquick.callback.GeneralClickCallback"/>

<variable
name="tabCallback"
type="com.xujiaji.mvvmquick.callback.GeneralClickCallback"/>

</data>

<android.support.constraint.ConstraintLayout
Expand Down Expand Up @@ -101,7 +105,8 @@
android:layout_marginEnd="@dimen/layout_margin"
app:layout_constraintBottom_toBottomOf="@+id/avatarLayout"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toTopOf="@+id/avatarLayout" />
app:layout_constraintTop_toTopOf="@+id/avatarLayout"
android:onClick="@{() -> tabCallback.onClick(blogPost.chapterId)}" />

<TextView
android:id="@+id/tag2"
Expand All @@ -112,7 +117,8 @@
android:textSize="@dimen/secondary_size"
app:layout_constraintBottom_toBottomOf="@+id/tag1"
app:layout_constraintEnd_toStartOf="@+id/tag1"
app:layout_constraintTop_toTopOf="@+id/tag1" />
app:layout_constraintTop_toTopOf="@+id/tag1"
android:onClick="@{() -> tabCallback.onClick(blogPost.superChapterId)}" />


<TextView
Expand Down
1 change: 1 addition & 0 deletions app/src/main/res/values/strings.xml
Original file line number Diff line number Diff line change
Expand Up @@ -90,5 +90,6 @@
<string name="project_use_libraries">项目中使用的 Library</string>
<string name="give_friend_download"><![CDATA[分享给身边的好友扫描下载 >]]></string>
<string name="format_have_sum_category">%s个子分类</string>
<string name="start_init_tree_data">正在初始化体系数据,请稍后...</string>

</resources>

0 comments on commit 8735b3b

Please sign in to comment.