Administrator
2021-11-06 9178a17fda334ae4fb1df7ddefcdae9bbc40400b
广场 控制层
大厅 分类弹框
6 files added
1 files renamed
6 files modified
381 ■■■■ changed files
app/src/main/java/com/duqing/missions/base/activities/BaseTitleBarActivity.java 1 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/dynamic/DynamicFragment.java 8 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareAdapter.java 14 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareFragment.java 14 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/dynamic/square/SquareViewModel.java 19 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/hall/SubHallFragment.java 18 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/hall/popup/HallClassifyAdapter.java 28 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/hall/popup/HallClassifyViewModel.java 11 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/hall/popup/PopupClassify.java 39 ●●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/HomeFragment.java 8 ●●●● patch | view | raw | blame | history
app/src/main/java/com/duqing/missions/ui/main/home/adapter/HomeClassifyAdapter.java 2 ●●● patch | view | raw | blame | history
app/src/main/res/layout/fragment_sub_hall.xml 153 ●●●●● patch | view | raw | blame | history
app/src/main/res/layout/hall_popu_classify.xml 66 ●●●● patch | view | raw | blame | history
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>