From c5157f9a0271372b4569cc4b71949e0cf66a630a Mon Sep 17 00:00:00 2001 From: ScorpioMiku <1056992492@qq.com> Date: Mon, 3 Sep 2018 17:41:34 +0800 Subject: [PATCH] 1 --- app/build.gradle | 4 +- .../adapter/HomePagerAdapter.java | 4 +- .../adapter/RecommendAdapter.java | 46 ++++++++++ .../nutritionmaster/bean/RecommendFood.java | 59 +++++++++++++ .../viewpagerfragments/page3/Page3.java | 27 ------ .../recommend/RecommendFragment.java | 85 +++++++++++++++++++ .../normal_recommend_fragment_layout.xml | 12 +++ app/src/main/res/layout/page_3.xml | 11 --- .../main/res/layout/recommend_item_big.xml | 43 ++++++++++ .../main/res/layout/recommend_item_detail.xml | 56 ++++++++++++ .../main/res/layout/recommend_item_middle.xml | 44 ++++++++++ app/src/main/res/values/dimens.xml | 4 + 12 files changed, 353 insertions(+), 42 deletions(-) create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java delete mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/page3/Page3.java create mode 100644 app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java create mode 100644 app/src/main/res/layout/normal_recommend_fragment_layout.xml delete mode 100644 app/src/main/res/layout/page_3.xml create mode 100644 app/src/main/res/layout/recommend_item_big.xml create mode 100644 app/src/main/res/layout/recommend_item_detail.xml create mode 100644 app/src/main/res/layout/recommend_item_middle.xml diff --git a/app/build.gradle b/app/build.gradle index 5864302..24b8ec6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -55,8 +55,6 @@ dependencies { implementation project(':todaystepcounterlib') //打分ui compile 'com.github.CB-ysx:CBRatingBar:3.0.1' -// //蛛网 -// implementation 'me.panpf:spider-web-score-view:1.0.1' //折线 implementation 'com.github.PhilJay:MPAndroidChart:v3.0.3' //searchview @@ -66,4 +64,6 @@ dependencies { //recycler and card implementation 'com.android.support:recyclerview-v7:26.1.0' implementation 'com.android.support:cardview-v7:26.1.0' + //混合式recyclerview + compile 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.30' } diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java index f705e2e..9667200 100644 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/HomePagerAdapter.java @@ -8,7 +8,7 @@ import android.support.v4.app.FragmentPagerAdapter; import com.example.ninefourone.nutritionmaster.R; import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.customization.CustomizationFragment; import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.bodyinformation.BodyInformationFragment; -import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.page3.Page3; +import com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.recommend.RecommendFragment; /** @@ -36,7 +36,7 @@ public class HomePagerAdapter extends FragmentPagerAdapter { fragments[position] = BodyInformationFragment.getInstance(); break; case 2: - fragments[position] = Page3.getInstance(); + fragments[position] = RecommendFragment.getInstance(); break; default: break; diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java new file mode 100644 index 0000000..321de39 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/adapter/RecommendAdapter.java @@ -0,0 +1,46 @@ +package com.example.ninefourone.nutritionmaster.adapter; + +import com.chad.library.adapter.base.BaseMultiItemQuickAdapter; +import com.chad.library.adapter.base.BaseViewHolder; +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.bean.RecommendFood; + +import java.util.List; + +/** + * Created by ScorpioMiku on 2018/9/3. + */ + +public class RecommendAdapter extends BaseMultiItemQuickAdapter { + /** + * Same as QuickAdapter#QuickAdapter(Context,int) but with + * some initialization data. + * + * @param data A new list is created out of this one to avoid mutable list + */ + public RecommendAdapter(List data) { + super(data); + addItemType(RecommendFood.TYPE_BIG, R.layout.recommend_item_big); + addItemType(RecommendFood.TYPE_DETAIL, R.layout.recommend_item_detail); + addItemType(RecommendFood.TYPE_MIDDLE, R.layout.recommend_item_middle); + } + + @Override + protected void convert(BaseViewHolder helper, RecommendFood item) { + switch (item.getItemType()) { + case RecommendFood.TYPE_BIG: + helper.setImageResource(R.id.recommend_item_imageview, R.drawable.food_test); + helper.setText(R.id.recommend_item_title, "红烧肉"); + break; + case RecommendFood.TYPE_DETAIL: + helper.setImageResource(R.id.recommend_item_imageview, R.drawable.food_test); + helper.setText(R.id.recommend_item_title, item.getTitle()); + helper.setText(R.id.recommend_item_description, item.getDescription()); + break; + case RecommendFood.TYPE_MIDDLE: + helper.setImageResource(R.id.recommend_item_imageview, R.drawable.food_test); + helper.setText(R.id.recommend_item_title, "红烧"); + break; + } + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java new file mode 100644 index 0000000..8a9a423 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/bean/RecommendFood.java @@ -0,0 +1,59 @@ +package com.example.ninefourone.nutritionmaster.bean; + +import com.chad.library.adapter.base.entity.MultiItemEntity; +import com.orhanobut.logger.Logger; + +/** + * Created by ScorpioMiku on 2018/9/3. + */ + +public class RecommendFood implements MultiItemEntity { + + public static final int TYPE_BIG = 0; + public static final int TYPE_MIDDLE = 1; + public static final int TYPE_DETAIL = 2; + + private int picture; + private String title; + private String description; + private int type; + + public RecommendFood(int picture, String title, String description, int type) { + this.picture = picture; + this.title = title; + this.description = description; + this.type = type; + if (type > 2) { + Logger.e("混合recycler type不对"); + } + } + + public int getPicture() { + return picture; + } + + public void setPicture(int picture) { + this.picture = picture; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + + public String getDescription() { + return description; + } + + public void setDescription(String description) { + this.description = description; + } + + @Override + public int getItemType() { + return type; + } +} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/page3/Page3.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/page3/Page3.java deleted file mode 100644 index fd1d881..0000000 --- a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/page3/Page3.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.page3; - -import android.os.Bundle; - -import com.example.ninefourone.nutritionmaster.R; -import com.example.ninefourone.nutritionmaster.base.BaseFragment; - -/** - * Created by ScorpioMiku on 2018/8/26. - */ - -public class Page3 extends BaseFragment { - @Override - public int getLayoutResId() { - return R.layout.page_3; - } - - @Override - public void initView(Bundle state) { - - } - - - public static BaseFragment getInstance() { - return new Page3(); - } -} diff --git a/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java new file mode 100644 index 0000000..506f4f3 --- /dev/null +++ b/app/src/main/java/com/example/ninefourone/nutritionmaster/modules/viewpagerfragments/recommend/RecommendFragment.java @@ -0,0 +1,85 @@ +package com.example.ninefourone.nutritionmaster.modules.viewpagerfragments.recommend; + +import android.os.Bundle; +import android.support.v7.widget.GridLayoutManager; +import android.support.v7.widget.LinearLayoutManager; +import android.support.v7.widget.RecyclerView; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; + +import com.example.ninefourone.nutritionmaster.R; +import com.example.ninefourone.nutritionmaster.adapter.RecommendAdapter; +import com.example.ninefourone.nutritionmaster.base.BaseFragment; +import com.example.ninefourone.nutritionmaster.bean.RecommendFood; + +import java.util.ArrayList; + +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.Unbinder; + +/** + * Created by ScorpioMiku on 2018/8/26. + */ + +public class RecommendFragment extends BaseFragment { + @BindView(R.id.recycler_view) + RecyclerView recyclerView; + Unbinder unbinder; + + private RecommendAdapter adapter; + private ArrayList datas = new ArrayList<>(); + + @Override + public int getLayoutResId() { + return R.layout.normal_recommend_fragment_layout; + } + + @Override + public void initView(Bundle state) { + loadData(); + initRecyclerView(); + } + + + public static BaseFragment getInstance() { + return new RecommendFragment(); + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { + // TODO: inflate a fragment view + View rootView = super.onCreateView(inflater, container, savedInstanceState); + unbinder = ButterKnife.bind(this, rootView); + return rootView; + } + + @Override + public void onDestroyView() { + super.onDestroyView(); + unbinder.unbind(); + } + + /** + * 初始化recyclerview + */ + @Override + protected void initRecyclerView() { + adapter = new RecommendAdapter(datas); + recyclerView.setAdapter(adapter); + recyclerView.setLayoutManager(new GridLayoutManager(getContext(), 2)); + } + + /** + * 加载数据 + */ + @Override + protected void loadData() { + super.loadData(); + for (int i = 0; i < 20; i++) { + RecommendFood recommendFood = new RecommendFood(1, "烧肉", "好吃", i % 3); + datas.add(recommendFood); + } + } +} diff --git a/app/src/main/res/layout/normal_recommend_fragment_layout.xml b/app/src/main/res/layout/normal_recommend_fragment_layout.xml new file mode 100644 index 0000000..56689ec --- /dev/null +++ b/app/src/main/res/layout/normal_recommend_fragment_layout.xml @@ -0,0 +1,12 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/page_3.xml b/app/src/main/res/layout/page_3.xml deleted file mode 100644 index b0e2af1..0000000 --- a/app/src/main/res/layout/page_3.xml +++ /dev/null @@ -1,11 +0,0 @@ - - - - \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_big.xml b/app/src/main/res/layout/recommend_item_big.xml new file mode 100644 index 0000000..ac9ad22 --- /dev/null +++ b/app/src/main/res/layout/recommend_item_big.xml @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_detail.xml b/app/src/main/res/layout/recommend_item_detail.xml new file mode 100644 index 0000000..0c01e63 --- /dev/null +++ b/app/src/main/res/layout/recommend_item_detail.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/recommend_item_middle.xml b/app/src/main/res/layout/recommend_item_middle.xml new file mode 100644 index 0000000..6f2a0bc --- /dev/null +++ b/app/src/main/res/layout/recommend_item_middle.xml @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/dimens.xml b/app/src/main/res/values/dimens.xml index e9c8804..7141409 100644 --- a/app/src/main/res/values/dimens.xml +++ b/app/src/main/res/values/dimens.xml @@ -20,5 +20,9 @@ 20dp + 130dp + 250dp + 10dp +