app/src/main/java/com/duqing/missions/base/activities/BaseTitleBarActivity.java
@@ -23,6 +23,7 @@ try { titleBarView = (TitleBarView) binding.getClass().getDeclaredField("titleBar").get(binding); titleBarView.setLeftClick(v -> onTitleLeftClick()); } catch (IllegalAccessException e) { e.printStackTrace(); } catch (NoSuchFieldException e) { app/src/main/java/com/duqing/missions/ui/main/dynamic/DynamicFragment.java
@@ -4,7 +4,7 @@ import com.duqing.missions.base.fragments.BaseFragment; import com.duqing.missions.base.fragments.BaseTabFragment; import com.duqing.missions.databinding.LayoutTabViewpagerBinding; import com.duqing.missions.ui.main.hall.SubHallFragment; import com.duqing.missions.ui.main.dynamic.square.SquareFragment; import java.util.ArrayList; import java.util.Arrays; @@ -30,9 +30,9 @@ @Override protected List<BaseFragment> initFragments() { List<BaseFragment> list = new ArrayList<>(); list.add(new SubHallFragment()); list.add(new SubHallFragment()); list.add(new SubHallFragment()); list.add(new SquareFragment()); list.add(new SquareFragment()); list.add(new SquareFragment()); return list; } } app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareAdapter.java
New file @@ -0,0 +1,14 @@ package com.duqing.missions.ui.main.dynamic.square; import com.duqing.missions.base.adapter.BaseAdapter; import com.duqing.missions.databinding.DynamicItemSquareBinding; /** * 广场帖子 * Created by Administrator on 2021/11/5 0005. */ public class SquareAdapter extends BaseAdapter<DynamicItemSquareBinding,String> { @Override protected void bindView(ViewBindHolder holder, String data, int position) { } } app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java
New file @@ -0,0 +1,14 @@ package com.duqing.missions.ui.main.dynamic.square; import com.duqing.missions.base.fragments.BaseLoadPageFragment; import com.duqing.missions.data.BasePageResult; import com.duqing.missions.databinding.RefreshRecyclerBinding; /** * 广场 * Created by Administrator on 2021/11/5 0005. */ public class SquareFragment extends BaseLoadPageFragment<RefreshRecyclerBinding,SquareViewModel,SquareAdapter, BasePageResult<String>> { } app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareViewModel.java
New file @@ -0,0 +1,19 @@ package com.duqing.missions.ui.main.dynamic.square; import com.duqing.missions.base.model.BaseLoadPageViewModel; /** * 广场 * Created by Administrator on 2021/11/5 0005. */ public class SquareViewModel extends BaseLoadPageViewModel { @Override public void onRefresh() { } @Override public void onLoadMore() { } } app/src/main/java/com/duqing/missions/ui/main/hall/SubHallFragment.java
@@ -1,9 +1,14 @@ package com.duqing.missions.ui.main.hall; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import com.duqing.missions.base.fragments.BaseLoadPageFragment; import com.duqing.missions.data.BasePageResult; import com.duqing.missions.databinding.FragmentSubHallBinding; import com.duqing.missions.databinding.RefreshRecyclerBinding; import com.duqing.missions.databinding.HallPopuClassifyBinding; import com.duqing.missions.ui.main.hall.popup.PopupClassify; import com.duqing.missions.ui.main.home.adapter.MissionAdapter; /** @@ -11,10 +16,17 @@ */ public class SubHallFragment extends BaseLoadPageFragment<FragmentSubHallBinding,SubHallViewModel, MissionAdapter, BasePageResult<String>> { @Override public void initViews() { super.initViews(); final RefreshRecyclerBinding includeRefreshRecycler = binding.includeRefreshRecycler; binding.txtClassify.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new PopupClassify(getContext(), HallPopuClassifyBinding.inflate((LayoutInflater) getContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE))).showAsDropDown(v); } }); } } app/src/main/java/com/duqing/missions/ui/main/hall/popup/HallClassifyAdapter.java
New file @@ -0,0 +1,28 @@ package com.duqing.missions.ui.main.hall.popup; import android.widget.CompoundButton; import com.duqing.missions.base.adapter.BaseAdapter; import com.duqing.missions.databinding.ItemClassifyBinding; /** * Created by Administrator on 2021/11/5 0005. */ public class HallClassifyAdapter extends BaseAdapter<ItemClassifyBinding,String> { @Override protected void bindView(ViewBindHolder holder, String data, int position) { holder.binding.check.setText(data); holder.binding.check.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() { @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(isChecked){ buttonView.setEnabled(false); }else{ buttonView.setEnabled(true); } } }); } } app/src/main/java/com/duqing/missions/ui/main/hall/popup/HallClassifyViewModel.java
New file @@ -0,0 +1,11 @@ package com.duqing.missions.ui.main.hall.popup; import androidx.lifecycle.ViewModel; /** * Created by Administrator on 2021/11/5 0005. */ public class HallClassifyViewModel extends ViewModel { } app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java
New file @@ -0,0 +1,39 @@ package com.duqing.missions.ui.main.hall.popup; import android.content.Context; import android.view.ViewGroup; import android.widget.PopupWindow; import androidx.recyclerview.widget.GridLayoutManager; import com.duqing.missions.databinding.HallPopuClassifyBinding; import java.util.ArrayList; import java.util.Arrays; /** * Created by Administrator on 2021/11/5 0005. */ public class PopupClassify extends PopupWindow { String[] classifies = new String[]{ "注册","投票","关注","浏览", "下载","转发","发帖","评论", "高价","电商","实名","试玩", "特单","砍价","其他" }; public PopupClassify(Context context,HallPopuClassifyBinding binding) { //final HallPopuClassifyBinding binding = HallPopuClassifyBinding.inflate((LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE)); super(binding.getRoot(), ViewGroup.LayoutParams.MATCH_PARENT,ViewGroup.LayoutParams.WRAP_CONTENT); binding.recycler.setLayoutManager(new GridLayoutManager(context,4)); HallClassifyAdapter adapter = new HallClassifyAdapter(); adapter.setData(new ArrayList<>(Arrays.asList(classifies))); binding.recycler.setAdapter(adapter); setOutsideTouchable(true); binding.textConfirm.setOnClickListener(v -> dismiss()); binding.textCancel.setOnClickListener(v -> dismiss()); } } app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java
@@ -18,7 +18,7 @@ import com.duqing.missions.data.BasePageResult; import com.duqing.missions.databinding.FragmentHomeBinding; import com.duqing.missions.ui.login.view.LoginActivity; import com.duqing.missions.ui.main.home.adapter.ClassifyAdapter; import com.duqing.missions.ui.main.home.adapter.HomeClassifyAdapter; import com.duqing.missions.ui.main.home.adapter.MissionAdapter; import com.duqing.missions.ui.main.home.adapter.MissionTopAdapter; import com.duqing.missions.ui.main.home.model.Classify; @@ -41,8 +41,8 @@ LinearLayoutManager layoutManager = new LinearLayoutManager(getContext()); layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); recyclerClassify.setLayoutManager(layoutManager); ClassifyAdapter classifyAdapter = new ClassifyAdapter(); recyclerClassify.setAdapter(classifyAdapter); HomeClassifyAdapter homeClassifyAdapter = new HomeClassifyAdapter(); recyclerClassify.setAdapter(homeClassifyAdapter); recyclerTop.setLayoutManager(new GridLayoutManager(getContext(),3)); final MissionTopAdapter topAdapter = new MissionTopAdapter(); recyclerTop.setAdapter(topAdapter); @@ -63,7 +63,7 @@ viewModel.getClassifies().observeForever(new Observer<List<Classify>>() { @Override public void onChanged(List<Classify> cliassifies) { classifyAdapter.setData(cliassifies); homeClassifyAdapter.setData(cliassifies); } }); } app/src/main/java/com/duqing/missions/ui/main/home/adapter/HomeClassifyAdapter.java
File was renamed from app/src/main/java/com/duqing/missions/ui/main/home/adapter/ClassifyAdapter.java @@ -7,7 +7,7 @@ /** * Created by Administrator on 2021/11/5 0005. */ public class ClassifyAdapter extends BaseAdapter<HomeItemClassifyBinding, Classify> { public class HomeClassifyAdapter extends BaseAdapter<HomeItemClassifyBinding, Classify> { @Override protected void bindView(ViewBindHolder holder, Classify data, int position) { holder.binding.textView.setText("Text "+position); app/src/main/res/layout/fragment_sub_hall.xml
@@ -2,7 +2,8 @@ <androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools"> <RadioGroup @@ -63,71 +64,91 @@ app:layout_constraintHorizontal_weight="1" app:layout_constraintHorizontal_chainStyle="spread" /> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_white_corner" android:elevation="@dimen/small_radios" android:layout_margin="@dimen/activity_horizontal_margin" android:padding="@dimen/frame_margin_lr" app:layout_constraintTop_toBottomOf="@id/radio_group" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toTopOf="@id/include_refresh_recycler"> <include layout="@layout/hall_item_top" android:id="@+id/layout_left" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/layout_between"/> <include layout="@layout/hall_item_top" android:id="@+id/layout_between" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_left" app:layout_constraintRight_toLeftOf="@id/layout_right" /> <include layout="@layout/hall_item_top" android:id="@+id/layout_right" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_between" app:layout_constraintRight_toRightOf="parent"/> <View android:layout_width="0.5dp" android:layout_height="0dp" android:background="@color/gray" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_left" /> <View android:layout_width="0.5dp" android:layout_height="0dp" android:background="@color/gray" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_between" /> </androidx.constraintlayout.widget.ConstraintLayout> <include layout="@layout/refresh_recycler" android:id="@+id/include_refresh_recycler" <com.scwang.smart.refresh.layout.SmartRefreshLayout android:id="@+id/smart_refresh" android:layout_width="match_parent" android:layout_height="0dp" app:layout_constraintTop_toBottomOf="@id/layout" app:layout_constraintBottom_toBottomOf="parent"/> app:layout_constraintTop_toBottomOf="@id/radio_group" app:layout_constraintBottom_toBottomOf="parent" > <androidx.core.widget.NestedScrollView android:layout_width="match_parent" android:layout_height="match_parent"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/layout" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_white_corner" android:elevation="@dimen/small_radios" android:layout_margin="@dimen/activity_horizontal_margin" android:padding="@dimen/frame_margin_lr" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintBottom_toTopOf="@id/recycler"> <include layout="@layout/hall_item_top" android:id="@+id/layout_left" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toLeftOf="@id/layout_between"/> <include layout="@layout/hall_item_top" android:id="@+id/layout_between" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_left" app:layout_constraintRight_toLeftOf="@id/layout_right" /> <include layout="@layout/hall_item_top" android:id="@+id/layout_right" android:layout_width="0dp" android:layout_height="wrap_content" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_between" app:layout_constraintRight_toRightOf="parent"/> <View android:layout_width="0.5dp" android:layout_height="0dp" android:background="@color/gray" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_left" /> <View android:layout_width="0.5dp" android:layout_height="0dp" android:background="@color/gray" app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintLeft_toRightOf="@id/layout_between" /> </androidx.constraintlayout.widget.ConstraintLayout> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" android:overScrollMode="never" android:padding="@dimen/activity_horizontal_margin" tools:listitem="@layout/homt_item_recommend" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/layout"/> </androidx.constraintlayout.widget.ConstraintLayout> </androidx.core.widget.NestedScrollView> </com.scwang.smart.refresh.layout.SmartRefreshLayout> </androidx.constraintlayout.widget.ConstraintLayout> app/src/main/res/layout/hall_popu_classify.xml
@@ -1,14 +1,60 @@ <?xml version="1.0" encoding="utf-8"?> <androidx.recyclerview.widget.RecyclerView xmlns:android="http://schemas.android.com/apk/res/android" <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" xmlns:app="http://schemas.android.com/apk/res-auto" android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" android:background="@drawable/bg_border_gray_corner" android:paddingBottom="@dimen/frame_margin_lr" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:spanCount="4" tools:listitem="@layout/item_classify" tools:itemCount="8"> </androidx.recyclerview.widget.RecyclerView> android:layout_height="wrap_content"> <androidx.constraintlayout.widget.ConstraintLayout android:layout_marginBottom="@dimen/small_radios" android:background="@color/white" android:elevation="@dimen/small_radios" android:layout_width="match_parent" android:layout_height="wrap_content"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recycler" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingBottom="@dimen/frame_margin_lr" android:overScrollMode="never" app:layout_constraintTop_toTopOf="parent" app:layout_constraintLeft_toLeftOf="parent" app:layout_constraintRight_toRightOf="parent" app:layoutManager="androidx.recyclerview.widget.GridLayoutManager" app:spanCount="4" tools:listitem="@layout/item_classify" tools:itemCount="8"> </androidx.recyclerview.widget.RecyclerView> <View android:layout_width="match_parent" android:layout_height="0.5dp" android:background="@color/gray" app:layout_constraintTop_toBottomOf="@id/recycler" /> <TextView android:id="@+id/text_cancel" android:layout_width="0dp" android:layout_height="40dp" android:text="取消" android:gravity="center" app:layout_constraintRight_toLeftOf="@id/text_confirm" app:layout_constraintTop_toBottomOf="@id/recycler" app:layout_constraintLeft_toLeftOf="parent" /> <TextView android:id="@+id/text_confirm" android:layout_width="0dp" android:layout_height="50dp" android:text="确定" android:gravity="center" app:layout_constraintTop_toBottomOf="@id/recycler" app:layout_constraintLeft_toRightOf="@id/text_cancel" app:layout_constraintRight_toRightOf="parent"/> <View android:layout_width="0.5dp" android:layout_height="0dp" android:background="@color/gray" app:layout_constraintTop_toTopOf="@id/text_cancel" app:layout_constraintBottom_toBottomOf="@id/text_cancel" app:layout_constraintLeft_toRightOf="@id/text_cancel"/> </androidx.constraintlayout.widget.ConstraintLayout> </RelativeLayout>