diff --git a/app/build.gradle b/app/build.gradle index 7a9270f..de700b6 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -64,4 +64,7 @@ dependencies { implementation "androidx.fragment:fragment:$fragment_version" + + + } \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/HomePageActivity.java b/app/src/main/java/com/android/activity/HomePageActivity.java index f2f5027..23c558a 100644 --- a/app/src/main/java/com/android/activity/HomePageActivity.java +++ b/app/src/main/java/com/android/activity/HomePageActivity.java @@ -24,6 +24,7 @@ public class HomePageActivity extends AppCompatActivity implements BottomNavigat private FragmentTransaction fragmentTransaction; + @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); diff --git a/app/src/main/java/com/android/activity/LoginActivity.java b/app/src/main/java/com/android/activity/LoginActivity.java index 462f3b7..b6fbef2 100644 --- a/app/src/main/java/com/android/activity/LoginActivity.java +++ b/app/src/main/java/com/android/activity/LoginActivity.java @@ -82,6 +82,7 @@ public class LoginActivity extends AppCompatActivity implements LoginListener, V this.responseData = responseData; login(); + Log.e("responseData",String.valueOf(responseData.getData().getId())); } diff --git a/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java b/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java new file mode 100644 index 0000000..6e4aba8 --- /dev/null +++ b/app/src/main/java/com/android/activity/adapter/GoodsTypeFSAdapter.java @@ -0,0 +1,40 @@ +package com.android.activity.adapter; + +import android.os.Bundle; + +import androidx.annotation.NonNull; +import androidx.fragment.app.Fragment; +import androidx.fragment.app.FragmentManager; +import androidx.lifecycle.Lifecycle; +import androidx.viewpager2.adapter.FragmentStateAdapter; + +import com.android.activity.fragment.GoodsTypeFragment; +import com.android.bean.Goods; +import com.android.bean.GoodsType; + +import java.util.List; + +public class GoodsTypeFSAdapter extends FragmentStateAdapter{ + private List goodsTypeList; + private List fragmentList; + + public GoodsTypeFSAdapter(@NonNull FragmentManager fragmentManager, + @NonNull Lifecycle lifecycle, +// List goodsTypeList, List goodsList, + List fragmentList){ + super(fragmentManager, lifecycle); + this.fragmentList = fragmentList; + } + + @NonNull + @Override + public Fragment createFragment(int position) { + + return fragmentList.get(position); + } + + @Override + public int getItemCount() { + return fragmentList.size(); + } +} diff --git a/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java b/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java new file mode 100644 index 0000000..f44a227 --- /dev/null +++ b/app/src/main/java/com/android/activity/fragment/GoodsTypeFragment.java @@ -0,0 +1,73 @@ +package com.android.activity.fragment; + +import android.os.Bundle; + +import androidx.fragment.app.Fragment; + +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import com.android.R; + +/** + * A simple {@link Fragment} subclass. + * Use the {@link GoodsTypeFragment#newInstance} factory method to + * create an instance of this fragment. + */ +public class GoodsTypeFragment extends Fragment { + + // TODO: Rename parameter arguments, choose names that match + // the fragment initialization parameters, e.g. ARG_ITEM_NUMBER + private static final String ARG_TEXT = "param1"; + + View rootView; + + // TODO: Rename and change types of parameters + private String mParam1; + + public GoodsTypeFragment() { + // Required empty public constructor + } + + /** + * Use this factory method to create a new instance of + * this fragment using the provided parameters. + * + * @param param1 Parameter 1. + * @return A new instance of fragment GoodsTypeFragment. + */ + // TODO: Rename and change types and number of parameters + public static GoodsTypeFragment newInstance(String param1) { + GoodsTypeFragment fragment = new GoodsTypeFragment(); + Bundle args = new Bundle(); + args.putString(ARG_TEXT, param1); + fragment.setArguments(args); + return fragment; + } + + @Override + public void onCreate(Bundle savedInstanceState) { + super.onCreate(savedInstanceState); + if (getArguments() != null) { + mParam1 = getArguments().getString(ARG_TEXT); + } + } + + @Override + public View onCreateView(LayoutInflater inflater, ViewGroup container, + Bundle savedInstanceState) { + // Inflate the layout for this fragment + + if(rootView == null) + rootView = inflater.inflate(R.layout.fragment_goods_type, container, false); + initView(); + return rootView; + } + + private void initView() { + TextView view = rootView.findViewById(R.id.tv_goods); + view.setText(mParam1); + } +} \ No newline at end of file diff --git a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java index 1b0cf76..bfc9e62 100644 --- a/app/src/main/java/com/android/activity/fragment/HomePageFragment.java +++ b/app/src/main/java/com/android/activity/fragment/HomePageFragment.java @@ -7,6 +7,7 @@ import androidx.annotation.Nullable; import androidx.fragment.app.Fragment; import androidx.recyclerview.widget.LinearLayoutManager; import androidx.recyclerview.widget.RecyclerView; +import androidx.viewpager2.widget.ViewPager2; import android.util.Log; import android.view.LayoutInflater; @@ -17,11 +18,15 @@ import android.widget.Button; import com.android.R; import com.android.activity.adapter.GoodsTypeAdapter; +import com.android.activity.adapter.GoodsTypeFSAdapter; import com.android.bean.GoodsType; import com.android.bean.ResponseData; import com.android.model.goods.GoodsListener; import com.android.model.goods.GoodsModelimpl; +import com.google.android.material.tabs.TabLayout; +import com.google.android.material.tabs.TabLayoutMediator; +import java.util.ArrayList; import java.util.List; /** @@ -34,9 +39,12 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, private Button button; private GoodsModelimpl goodsModelimpl; private List goodsTypeList; - private GoodsTypeAdapter goodsTypeAdapter = null; - private RecyclerView recyclerView; +// private GoodsTypeAdapter goodsTypeAdapter = null; +// private RecyclerView recyclerView; private View rootView; + private GoodsTypeFSAdapter goodsTypeFSAdapter; + + private ViewPager2 viewPager; @@ -78,19 +86,34 @@ public class HomePageFragment extends Fragment implements View.OnClickListener, @Override public void onGetAllGoodsType(ResponseData> responseData) { this.goodsTypeList = responseData.getData(); + this.goodsTypeList.add(new GoodsType(0,"全部")); + initRecyclerview(); } private void initRecyclerview() { - recyclerView = rootView.findViewById(R.id.lv_goodsType_list); + viewPager = rootView.findViewById(R.id.view_pager); + +// goodsTypeAdapter = new GoodsTypeAdapter(goodsTypeList,context,R.layout.list_good_stype_item); +// viewPager.setAdapter(goodsTypeAdapter); + + + ArrayList fragments = new ArrayList<>(); + for (int i = 0; i < goodsTypeList.size(); i++) { + fragments.add(GoodsTypeFragment.newInstance(goodsTypeList.get(i).getType())); + } + + - goodsTypeAdapter = new GoodsTypeAdapter(goodsTypeList,context,R.layout.list_good_stype_item); + goodsTypeFSAdapter = new GoodsTypeFSAdapter(getActivity().getSupportFragmentManager(), getLifecycle(),fragments); + viewPager.setAdapter(goodsTypeFSAdapter); + //把TabLayout(选项卡布局)和ViewPager2绑定在一起。特别说明一下,下面这行代码是官方给的,特别好使。 + TabLayout tablayout = rootView.findViewById(R.id.tabLayout); + new TabLayoutMediator(tablayout, viewPager, + (tab, position) -> tab.setText(goodsTypeList.get(position).getType())).attach(); - LinearLayoutManager llm = new LinearLayoutManager(context); - recyclerView.setLayoutManager(llm); - recyclerView.setAdapter(goodsTypeAdapter); } @Override diff --git a/app/src/main/java/com/android/bean/GoodsType.java b/app/src/main/java/com/android/bean/GoodsType.java index ff5e78b..5d6260e 100644 --- a/app/src/main/java/com/android/bean/GoodsType.java +++ b/app/src/main/java/com/android/bean/GoodsType.java @@ -4,6 +4,14 @@ public class GoodsType { private Integer id; private String type; + public GoodsType() { + } + + public GoodsType(Integer id, String type) { + this.id = id; + this.type = type; + } + public Integer getId() { return id; } diff --git a/app/src/main/res/layout/fragment_goods_type.xml b/app/src/main/res/layout/fragment_goods_type.xml new file mode 100644 index 0000000..51df399 --- /dev/null +++ b/app/src/main/res/layout/fragment_goods_type.xml @@ -0,0 +1,15 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_home_page.xml b/app/src/main/res/layout/fragment_home_page.xml index cfe4e1e..3b28447 100644 --- a/app/src/main/res/layout/fragment_home_page.xml +++ b/app/src/main/res/layout/fragment_home_page.xml @@ -1,15 +1,24 @@ - + app:tabMode="scrollable" + /> + + diff --git a/app/src/main/res/layout/fragment_shop_page.xml b/app/src/main/res/layout/fragment_shop_page.xml index 8199094..d591f18 100644 --- a/app/src/main/res/layout/fragment_shop_page.xml +++ b/app/src/main/res/layout/fragment_shop_page.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".activity.fragment.ShopPageFragment"> + tools:context=".activity.fragment.ShopCarPageFragment">