From 7af079b6e0e7365b48dbe2223fd32ec28dda7702 Mon Sep 17 00:00:00 2001 From: wds Date: Thu, 27 May 2021 18:46:16 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E5=8F=91=E7=8E=B0-=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E4=B8=93=E5=8C=BA=EF=BC=8C=E6=B4=BB=E5=8A=A8=E4=B8=93?= =?UTF-8?q?=E5=8C=BA?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/src/main/AndroidManifest.xml | 21 +- ...tFragment.java => FragmentManagement.java} | 26 +- .../myapplication/activity/HomeActivity.java | 13 +- .../myapplication/activity/LoginActivity.java | 4 +- .../myapplication/activity/MainActivity.java | 3 + .../myapplication/activity/WebActivity.java | 49 +++ .../adapter/EventPrefectureAdapter.java | 80 +++++ .../adapter/TaskPrefectureAdapter.java | 79 +++++ .../myapplication/base/BaseActivity.java | 22 +- .../myapplication/base/BaseFragment.java | 28 +- ...ZoneBean.java => EventPrefectureBean.java} | 10 +- .../myapplication/bean/TaskExplainBean.java | 144 ++++++++ .../bean/TaskSpecificationBean.java | 16 +- .../bean/TaskSpecificationInfo.java | 5 - .../fragment/CapacityEvaluationFragment.java | 8 +- .../fragment/EventPrefectureFragment.java | 161 +++++++++ .../myapplication/fragment/FindFragment.java | 29 +- .../fragment/RecordFragment.java | 28 -- .../fragment/RegisterFragment.java | 45 +-- .../fragment/TaskExplainFragment.java | 8 +- .../fragment/TaskExplainFragment2.java | 4 +- .../fragment/TaskPrefectureFragment.java | 121 ++++++- .../myapplication/http/HttpInterface.java | 2 + .../myapplication/util/CustomScrollView.java | 34 ++ .../main/res/drawable/ic_baseline_arrow.xml | 13 +- .../res/drawable/ic_baseline_arrow_back.xml | 10 + app/src/main/res/drawable/icon_arrow.xml | 5 + .../res/drawable/icon_capacity_evaluation.png | Bin 0 -> 937 bytes .../res/drawable/icon_event_prefecture.png | Bin 0 -> 8110 bytes .../res/drawable/icon_task_prefecture.png | Bin 0 -> 10123 bytes .../res/drawable/icon_task_specification.png | Bin 0 -> 847 bytes app/src/main/res/layout/activity_web.xml | 51 +++ .../res/layout/event_prefecture_fragment.xml | 42 +++ .../main/res/layout/event_prefecture_item.xml | 40 +++ app/src/main/res/layout/find_fragment.xml | 318 +++++++++--------- .../res/layout/task_prefecture_fragment.xml | 13 +- .../main/res/layout/task_prefecture_item.xml | 38 +++ app/src/main/res/values/strings.xml | 4 +- app/src/main/res/values/styles.xml | 23 +- 39 files changed, 1189 insertions(+), 308 deletions(-) rename app/src/main/java/com/example/myapplication/activity/{ManagementFragment.java => FragmentManagement.java} (88%) create mode 100644 app/src/main/java/com/example/myapplication/activity/WebActivity.java create mode 100644 app/src/main/java/com/example/myapplication/adapter/EventPrefectureAdapter.java create mode 100644 app/src/main/java/com/example/myapplication/adapter/TaskPrefectureAdapter.java rename app/src/main/java/com/example/myapplication/bean/{TaskZoneBean.java => EventPrefectureBean.java} (95%) create mode 100644 app/src/main/java/com/example/myapplication/bean/TaskExplainBean.java delete mode 100644 app/src/main/java/com/example/myapplication/bean/TaskSpecificationInfo.java create mode 100644 app/src/main/java/com/example/myapplication/fragment/EventPrefectureFragment.java create mode 100644 app/src/main/java/com/example/myapplication/util/CustomScrollView.java create mode 100644 app/src/main/res/drawable/ic_baseline_arrow_back.xml create mode 100644 app/src/main/res/drawable/icon_arrow.xml create mode 100644 app/src/main/res/drawable/icon_capacity_evaluation.png create mode 100644 app/src/main/res/drawable/icon_event_prefecture.png create mode 100644 app/src/main/res/drawable/icon_task_prefecture.png create mode 100644 app/src/main/res/drawable/icon_task_specification.png create mode 100644 app/src/main/res/layout/activity_web.xml create mode 100644 app/src/main/res/layout/event_prefecture_fragment.xml create mode 100644 app/src/main/res/layout/event_prefecture_item.xml create mode 100644 app/src/main/res/layout/task_prefecture_item.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 3659ec9..bbdd103 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -4,22 +4,22 @@ + - - - - - - - - + @@ -27,7 +27,10 @@ - + + + + \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/activity/ManagementFragment.java b/app/src/main/java/com/example/myapplication/activity/FragmentManagement.java similarity index 88% rename from app/src/main/java/com/example/myapplication/activity/ManagementFragment.java rename to app/src/main/java/com/example/myapplication/activity/FragmentManagement.java index 6828a66..794065b 100644 --- a/app/src/main/java/com/example/myapplication/activity/ManagementFragment.java +++ b/app/src/main/java/com/example/myapplication/activity/FragmentManagement.java @@ -1,11 +1,14 @@ package com.example.myapplication.activity; import android.content.Intent; +import android.os.Bundle; +import android.view.KeyEvent; import com.example.myapplication.R; import com.example.myapplication.base.BaseActivity; import com.example.myapplication.fragment.CapacityEvaluationFragment; import com.example.myapplication.fragment.CapacityEvaluationFragment2; +import com.example.myapplication.fragment.EventPrefectureFragment; import com.example.myapplication.fragment.FindFragment; import com.example.myapplication.fragment.ForgetPawFragment; import com.example.myapplication.fragment.MineFragment; @@ -27,7 +30,7 @@ import androidx.fragment.app.FragmentTransaction; * fragment 管理作用: */ -public class ManagementFragment extends BaseActivity { +public class FragmentManagement extends BaseActivity { private FragmentManager fragmentManager; private int fourthly_tag; private MineFragment mineFragment;//我的fragment @@ -38,6 +41,7 @@ public class ManagementFragment extends BaseActivity { private CapacityEvaluationFragment capacityEvaluationFragment;//发现-能力测评fragment private TaskExplainFragment taskExplainFragment;//发现-任务说明的fragment + private EventPrefectureFragment eventPrefectureFragment;//发现-活动专区的fragment private TaskExplainFragment2 taskExplainFragment2;//发现-任务说明2的fragment private CapacityEvaluationFragment2 capacityEvaluationFragment2;//发现-能力测评2的fragment @@ -46,6 +50,7 @@ public class ManagementFragment extends BaseActivity { private ForgetPawFragment forgetPawFragment;//忘记密码fragment + @Override protected int getLayout() { return R.layout.management_fragment; @@ -72,6 +77,7 @@ public class ManagementFragment extends BaseActivity { fragmentTransaction.hide(recordFragment); if (treasureFragment != null) fragmentTransaction.hide(treasureFragment); + if (taskPrefectureFragment!=null) if (taskPrefectureFragment != null) fragmentTransaction.hide(taskPrefectureFragment); @@ -89,6 +95,8 @@ public class ManagementFragment extends BaseActivity { fragmentTransaction.hide(registerFragment); if (forgetPawFragment != null) fragmentTransaction.hide(forgetPawFragment); + if (eventPrefectureFragment != null) + fragmentTransaction.hide(eventPrefectureFragment); } @@ -163,6 +171,14 @@ public class ManagementFragment extends BaseActivity { fragmentTransaction.show(taskExplainFragment); } break; + case 9: + if (eventPrefectureFragment == null) { + eventPrefectureFragment = new EventPrefectureFragment(); + fragmentTransaction.add(R.id.frame_layout, eventPrefectureFragment); + } else { + fragmentTransaction.show(eventPrefectureFragment); + } + break; case 10: if (taskExplainFragment2 == null) { taskExplainFragment2 = new TaskExplainFragment2(); @@ -221,6 +237,9 @@ public class ManagementFragment extends BaseActivity { case 8: taskExplainFragment.onActivityResult(requestCode, resultCode, data); break; + case 9: + eventPrefectureFragment.onActivityResult(requestCode,resultCode,data); + break; case 10: taskExplainFragment2.onActivityResult(requestCode, resultCode, data); break; @@ -235,10 +254,9 @@ public class ManagementFragment extends BaseActivity { } private void setZtlTextColor() { - ImmersionBar.with(this) - .statusBarDarkFont(true, 0.2f) //原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度 + ImmersionBar.with(this).statusBarDarkFont(true, 0.2f) + //原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度 .init(); - } } diff --git a/app/src/main/java/com/example/myapplication/activity/HomeActivity.java b/app/src/main/java/com/example/myapplication/activity/HomeActivity.java index f17c962..c51fce6 100644 --- a/app/src/main/java/com/example/myapplication/activity/HomeActivity.java +++ b/app/src/main/java/com/example/myapplication/activity/HomeActivity.java @@ -22,10 +22,13 @@ import com.google.android.material.tabs.TabLayout; import com.gyf.immersionbar.ImmersionBar; import java.util.ArrayList; +/** + * 首页 + */ public class HomeActivity extends BaseActivity{ private NoSlideViewPager mViewPager; private TabLayout mTab; - private final String[] name = {"寻宝", "记录", "发现", "我的"}; + private final String[] names = {"寻宝", "记录", "发现", "我的"}; private final int[] pic = {R.mipmap.map_select,R.mipmap.task_select,R.mipmap.article_select,R.mipmap.mine_select}; private final int[] pic1 = {R.mipmap.map,R.mipmap.task,R.mipmap.article,R.mipmap.mine}; @@ -64,10 +67,10 @@ public class HomeActivity extends BaseActivity{ mViewPager.setCanScroll(true); mViewPager.setNoScrollAnim(false); mTab.setupWithViewPager(mViewPager); - mTab.getTabAt(0).setText(name[0]).setIcon(pic[0]); - mTab.getTabAt(1).setText(name[1]).setIcon(pic1[1]); - mTab.getTabAt(2).setText(name[2]).setIcon(pic1[2]); - mTab.getTabAt(3).setText(name[3]).setIcon(pic1[3]); + mTab.getTabAt(0).setText(names[0]).setIcon(pic[0]); + mTab.getTabAt(1).setText(names[1]).setIcon(pic1[1]); + mTab.getTabAt(2).setText(names[2]).setIcon(pic1[2]); + mTab.getTabAt(3).setText(names[3]).setIcon(pic1[3]); mTab.addOnTabSelectedListener(new TabLayout.OnTabSelectedListener() { //禁止table layout效果 @Override diff --git a/app/src/main/java/com/example/myapplication/activity/LoginActivity.java b/app/src/main/java/com/example/myapplication/activity/LoginActivity.java index 4d3d326..5da6a38 100644 --- a/app/src/main/java/com/example/myapplication/activity/LoginActivity.java +++ b/app/src/main/java/com/example/myapplication/activity/LoginActivity.java @@ -46,12 +46,12 @@ public class LoginActivity extends BaseActivity implements View.OnClickListener public void onClick(View v) { switch (v.getId()) { case R.id.tv_register: - Intent register = new Intent(this, ManagementFragment.class); + Intent register = new Intent(this, FragmentManagement.class); register.putExtra("tag", 5); startActivity(register); break; case R.id.tv_forget_paw: - Intent forgetPaw = new Intent(this, ManagementFragment.class); + Intent forgetPaw = new Intent(this, FragmentManagement.class); forgetPaw.putExtra("tag", 6); startActivity(forgetPaw); break; diff --git a/app/src/main/java/com/example/myapplication/activity/MainActivity.java b/app/src/main/java/com/example/myapplication/activity/MainActivity.java index c5cfbf0..52d7aa8 100644 --- a/app/src/main/java/com/example/myapplication/activity/MainActivity.java +++ b/app/src/main/java/com/example/myapplication/activity/MainActivity.java @@ -10,6 +10,9 @@ import android.os.CountDownTimer; import com.example.myapplication.R; import com.example.myapplication.base.BaseActivity; +/** + * 启动页 + */ public class MainActivity extends BaseActivity { @Override diff --git a/app/src/main/java/com/example/myapplication/activity/WebActivity.java b/app/src/main/java/com/example/myapplication/activity/WebActivity.java new file mode 100644 index 0000000..07f841b --- /dev/null +++ b/app/src/main/java/com/example/myapplication/activity/WebActivity.java @@ -0,0 +1,49 @@ +package com.example.myapplication.activity; + +import android.view.View; +import android.webkit.WebView; +import android.widget.ImageView; + +import com.example.myapplication.R; +import com.example.myapplication.base.BaseActivity; +import com.gyf.immersionbar.ImmersionBar; + +/** + * 详情页 + */ +public class WebActivity extends BaseActivity implements View.OnClickListener { + + private ImageView ivIcon; + private WebView nWebView; + + @Override + protected int getLayout() { + return R.layout.activity_web; + } + + @Override + protected void initView() { + super.initView(); + ImmersionBar.with(this) + .statusBarDarkFont(true, 0.2f) + //原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度 + .init(); + nWebView = findViewById(R.id.news_webView); + ivIcon = findViewById(R.id.iv_icon); + ivIcon.setOnClickListener(this::onClick); + } + + @Override + protected void initData() { + super.initData(); + } + + @Override + public void onClick(View v) { + switch (v.getId()){ + case R.id.iv_icon: + finish(); + break; + } + } +} diff --git a/app/src/main/java/com/example/myapplication/adapter/EventPrefectureAdapter.java b/app/src/main/java/com/example/myapplication/adapter/EventPrefectureAdapter.java new file mode 100644 index 0000000..051e1fb --- /dev/null +++ b/app/src/main/java/com/example/myapplication/adapter/EventPrefectureAdapter.java @@ -0,0 +1,80 @@ +package com.example.myapplication.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.myapplication.R; +import com.example.myapplication.bean.EventPrefectureBean; +import com.example.myapplication.bean.TaskExplainBean; + +import java.util.ArrayList; +import java.util.List; + +public class EventPrefectureAdapter extends RecyclerView.Adapter { + private List dataBeans=new ArrayList<>(); + private Context context; + + public EventPrefectureAdapter(Context context) { + this.context = context; + } + + public void setDataBeans(List dataBeans) { + this.dataBeans.addAll(dataBeans); + notifyDataSetChanged(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View mView = LayoutInflater.from(context).inflate(R.layout.event_prefecture_item, parent, false); + return new ViewHolder(mView); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + EventPrefectureBean.BodyBean.DataBean dataBean = dataBeans.get(position); + holder.tvTitle.setText(dataBean.getTitle()); + holder.tvDest.setText(dataBean.getSubtitle()); + holder.tvTime.setText(dataBean.getCreatetime()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (clickItem!=null){ + clickItem.item(dataBean.getId()); + } + } + }); + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + TextView tvTitle; + TextView tvDest; + TextView tvTime; + public ViewHolder(@NonNull View itemView) { + super(itemView); + tvTitle=itemView.findViewById(R.id.tv_title); + tvDest=itemView.findViewById(R.id.tv_dest); + tvTime=itemView.findViewById(R.id.tv_time); + } + } + clickItem clickItem; + + public void setClickItem(EventPrefectureAdapter.clickItem clickItem) { + this.clickItem = clickItem; + } + + public interface clickItem{ + void item(int aInt); + } +} diff --git a/app/src/main/java/com/example/myapplication/adapter/TaskPrefectureAdapter.java b/app/src/main/java/com/example/myapplication/adapter/TaskPrefectureAdapter.java new file mode 100644 index 0000000..686d534 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/adapter/TaskPrefectureAdapter.java @@ -0,0 +1,79 @@ +package com.example.myapplication.adapter; + +import android.content.Context; +import android.view.LayoutInflater; +import android.view.View; +import android.view.ViewGroup; +import android.widget.TextView; + +import androidx.annotation.NonNull; +import androidx.recyclerview.widget.RecyclerView; + +import com.example.myapplication.R; +import com.example.myapplication.bean.TaskExplainBean; + +import java.util.ArrayList; +import java.util.List; + +public class TaskPrefectureAdapter extends RecyclerView.Adapter { + private List dataBeans=new ArrayList<>(); + private Context context; + + public TaskPrefectureAdapter(Context context) { + this.context = context; + } + + public void setDataBeans(List dataBeans) { + this.dataBeans.addAll(dataBeans); + notifyDataSetChanged(); + } + + @NonNull + @Override + public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { + View mView = LayoutInflater.from(context).inflate(R.layout.task_prefecture_item, parent, false); + return new ViewHolder(mView); + } + + @Override + public void onBindViewHolder(@NonNull ViewHolder holder, int position) { + TaskExplainBean.BodyBean.DataBean dataBean = dataBeans.get(position); + holder.tvTitle.setText(dataBean.getTitle()); + holder.tvDest.setText(dataBean.getSubtitle()); + holder.tvTime.setText(dataBean.getCreatetime()); + holder.itemView.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + if (clickItem!=null){ + clickItem.item(dataBean.getId()); + } + } + }); + } + + @Override + public int getItemCount() { + return dataBeans.size(); + } + + public class ViewHolder extends RecyclerView.ViewHolder { + TextView tvTitle; + TextView tvDest; + TextView tvTime; + public ViewHolder(@NonNull View itemView) { + super(itemView); + tvTitle=itemView.findViewById(R.id.tv_title); + tvDest=itemView.findViewById(R.id.tv_dest); + tvTime=itemView.findViewById(R.id.tv_time); + } + } + clickItem clickItem; + + public void setClickItem(TaskPrefectureAdapter.clickItem clickItem) { + this.clickItem = clickItem; + } + + public interface clickItem{ + void item(int aInt); + } +} diff --git a/app/src/main/java/com/example/myapplication/base/BaseActivity.java b/app/src/main/java/com/example/myapplication/base/BaseActivity.java index 77bacd7..40ac940 100644 --- a/app/src/main/java/com/example/myapplication/base/BaseActivity.java +++ b/app/src/main/java/com/example/myapplication/base/BaseActivity.java @@ -1,9 +1,12 @@ package com.example.myapplication.base; +import android.app.Activity; +import android.app.Application; import android.content.pm.ActivityInfo; import android.graphics.drawable.ColorDrawable; import android.os.Bundle; +import android.util.DisplayMetrics; import android.view.KeyEvent; import android.widget.Toast; @@ -28,15 +31,32 @@ public abstract class BaseActivity extends AppCompatActivity { ImmersionBar.with(this).init(); Collector.addActivity(this); setContentView(getLayout()); - initMVP(); initView(); initData(); initListener(); } + private static void setCustomDensity(Application application, Activity activity) { + final DisplayMetrics appDisplayMetrics = application.getResources().getDisplayMetrics(); + // 以设计DP为360为例,获得目标Density + final float targetDensity = (float) (appDisplayMetrics.widthPixels / 360.0); + final float targetScaledDensity = targetDensity * (appDisplayMetrics.scaledDensity / appDisplayMetrics.density); + final int targetDensityDpi = (int)(targetDensity * 160); + //设置application的Density + appDisplayMetrics.density = targetDensity; + appDisplayMetrics.scaledDensity = targetScaledDensity; + appDisplayMetrics.densityDpi = targetDensityDpi; + //设置activity的Density + final DisplayMetrics activityDisplayMetrics = activity.getResources().getDisplayMetrics(); + activityDisplayMetrics.density = targetDensity; + activityDisplayMetrics.scaledDensity = targetScaledDensity; + activityDisplayMetrics.densityDpi = targetDensityDpi; + } + protected void toast(String mag){ Toast.makeText(UserApplication.getUserApplication(), mag, Toast.LENGTH_SHORT).show(); } + protected void initMVP() { } public void showLoadingDialog() { diff --git a/app/src/main/java/com/example/myapplication/base/BaseFragment.java b/app/src/main/java/com/example/myapplication/base/BaseFragment.java index b031b49..aa71384 100644 --- a/app/src/main/java/com/example/myapplication/base/BaseFragment.java +++ b/app/src/main/java/com/example/myapplication/base/BaseFragment.java @@ -8,6 +8,7 @@ import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; +import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.appcompat.app.AlertDialog; @@ -25,19 +26,21 @@ public abstract class BaseFragment extends Fragment { @Nullable @Override public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - mView = LayoutInflater.from(getActivity()).inflate(getLayout(), container, false); - initMvp(); - initView(); - initData(); - + View mView= LayoutInflater.from(getActivity()).inflate(getLayout(), container, false); return mView; } - - protected void initMvp() { - + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + initMvp(); + initData(); + initView(); } + protected T findViewById(@IdRes int id){ + return getView().findViewById(id); + } protected abstract int getLayout(); public void showLoadingDialog() { alertDialog = new AlertDialog.Builder(getActivity()).create(); @@ -67,18 +70,15 @@ public abstract class BaseFragment extends Fragment { alertDialog.dismiss(); } } - protected void initData() { - } + protected void initMvp() { } - protected void initView() { + protected void initData() { } - - } + protected void initView() { } @Override public void onDestroyView() { super.onDestroyView(); - } } diff --git a/app/src/main/java/com/example/myapplication/bean/TaskZoneBean.java b/app/src/main/java/com/example/myapplication/bean/EventPrefectureBean.java similarity index 95% rename from app/src/main/java/com/example/myapplication/bean/TaskZoneBean.java rename to app/src/main/java/com/example/myapplication/bean/EventPrefectureBean.java index 1311b7e..da7b7d2 100644 --- a/app/src/main/java/com/example/myapplication/bean/TaskZoneBean.java +++ b/app/src/main/java/com/example/myapplication/bean/EventPrefectureBean.java @@ -3,9 +3,9 @@ package com.example.myapplication.bean; import java.util.List; /** - * 任务专区bean + * 活动专区 */ -public class TaskZoneBean { +public class EventPrefectureBean { /** * msg : 成功 * body : {"rownum":0,"data":[{"Subtitle":"说明0","createtime":"2021-05-26 15:33:51","src":"","id":0,"title":"标题0"},{"Subtitle":"说明1","createtime":"2021-05-26 15:33:51","src":"","id":1,"title":"标题1"},{"Subtitle":"说明2","createtime":"2021-05-26 15:33:51","src":"","id":2,"title":"标题2"},{"Subtitle":"说明3","createtime":"2021-05-26 15:33:51","src":"","id":3,"title":"标题3"},{"Subtitle":"说明4","createtime":"2021-05-26 15:33:51","src":"","id":4,"title":"标题4"},{"Subtitle":"说明5","createtime":"2021-05-26 15:33:51","src":"","id":5,"title":"标题5"},{"Subtitle":"说明6","createtime":"2021-05-26 15:33:51","src":"","id":6,"title":"标题6"},{"Subtitle":"说明7","createtime":"2021-05-26 15:33:51","src":"","id":7,"title":"标题7"},{"Subtitle":"说明8","createtime":"2021-05-26 15:33:51","src":"","id":8,"title":"标题8"},{"Subtitle":"说明9","createtime":"2021-05-26 15:33:51","src":"","id":9,"title":"标题9"}],"numFound":100,"rows":10} @@ -51,7 +51,7 @@ public class TaskZoneBean { private int rownum; private int numFound; private int rows; - private List data; + private List data; public int getRownum() { return rownum; @@ -77,11 +77,11 @@ public class TaskZoneBean { this.rows = rows; } - public List getData() { + public List getData() { return data; } - public void setData(List data) { + public void setData(List data) { this.data = data; } diff --git a/app/src/main/java/com/example/myapplication/bean/TaskExplainBean.java b/app/src/main/java/com/example/myapplication/bean/TaskExplainBean.java new file mode 100644 index 0000000..d485de0 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/bean/TaskExplainBean.java @@ -0,0 +1,144 @@ +package com.example.myapplication.bean; + +import java.util.List; + +/** + * 任务说明点击 + */ +public class TaskExplainBean { + /** + * msg : 成功 + * body : {"rownum":0,"data":[{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":13,"title":"标题13"}],"numFound":100,"rows":10} + * status : 0 + */ + + private String msg; + private BodyBean body; + private int status; + + public String getMsg() { + return msg; + } + + public void setMsg(String msg) { + this.msg = msg; + } + + public BodyBean getBody() { + return body; + } + + public void setBody(BodyBean body) { + this.body = body; + } + + public int getStatus() { + return status; + } + + public void setStatus(int status) { + this.status = status; + } + + public static class BodyBean { + /** + * rownum : 0 + * data : [{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":13,"title":"标题13"}] + * numFound : 100 + * rows : 10 + */ + + private int rownum; + private int numFound; + private int rows; + private List data; + + public int getRownum() { + return rownum; + } + + public void setRownum(int rownum) { + this.rownum = rownum; + } + + public int getNumFound() { + return numFound; + } + + public void setNumFound(int numFound) { + this.numFound = numFound; + } + + public int getRows() { + return rows; + } + + public void setRows(int rows) { + this.rows = rows; + } + + public List getData() { + return data; + } + + public void setData(List data) { + this.data = data; + } + + public static class DataBean { + /** + * Subtitle : + * createtime : + * src : http://10.130.23.166:8080/cbt/img/blue.png + * id : 11 + * title : 标题11 + */ + + private String Subtitle; + private String createtime; + private String src; + private int id; + private String title; + + public String getSubtitle() { + return Subtitle; + } + + public void setSubtitle(String Subtitle) { + this.Subtitle = Subtitle; + } + + public String getCreatetime() { + return createtime; + } + + public void setCreatetime(String createtime) { + this.createtime = createtime; + } + + public String getSrc() { + return src; + } + + public void setSrc(String src) { + this.src = src; + } + + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + + public String getTitle() { + return title; + } + + public void setTitle(String title) { + this.title = title; + } + } + } +} diff --git a/app/src/main/java/com/example/myapplication/bean/TaskSpecificationBean.java b/app/src/main/java/com/example/myapplication/bean/TaskSpecificationBean.java index be20859..f9b70cf 100644 --- a/app/src/main/java/com/example/myapplication/bean/TaskSpecificationBean.java +++ b/app/src/main/java/com/example/myapplication/bean/TaskSpecificationBean.java @@ -3,12 +3,12 @@ package com.example.myapplication.bean; import java.util.List; /** - * 任务说明点击 + * 任务专区bean */ public class TaskSpecificationBean { /** * msg : 成功 - * body : {"rownum":0,"data":[{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":13,"title":"标题13"}],"numFound":100,"rows":10} + * body : {"rownum":0,"data":[{"Subtitle":"说明0","createtime":"2021-05-26 15:33:51","src":"","id":0,"title":"标题0"},{"Subtitle":"说明1","createtime":"2021-05-26 15:33:51","src":"","id":1,"title":"标题1"},{"Subtitle":"说明2","createtime":"2021-05-26 15:33:51","src":"","id":2,"title":"标题2"},{"Subtitle":"说明3","createtime":"2021-05-26 15:33:51","src":"","id":3,"title":"标题3"},{"Subtitle":"说明4","createtime":"2021-05-26 15:33:51","src":"","id":4,"title":"标题4"},{"Subtitle":"说明5","createtime":"2021-05-26 15:33:51","src":"","id":5,"title":"标题5"},{"Subtitle":"说明6","createtime":"2021-05-26 15:33:51","src":"","id":6,"title":"标题6"},{"Subtitle":"说明7","createtime":"2021-05-26 15:33:51","src":"","id":7,"title":"标题7"},{"Subtitle":"说明8","createtime":"2021-05-26 15:33:51","src":"","id":8,"title":"标题8"},{"Subtitle":"说明9","createtime":"2021-05-26 15:33:51","src":"","id":9,"title":"标题9"}],"numFound":100,"rows":10} * status : 0 */ @@ -43,7 +43,7 @@ public class TaskSpecificationBean { public static class BodyBean { /** * rownum : 0 - * data : [{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":13,"title":"标题13"}] + * data : [{"Subtitle":"说明0","createtime":"2021-05-26 15:33:51","src":"","id":0,"title":"标题0"},{"Subtitle":"说明1","createtime":"2021-05-26 15:33:51","src":"","id":1,"title":"标题1"},{"Subtitle":"说明2","createtime":"2021-05-26 15:33:51","src":"","id":2,"title":"标题2"},{"Subtitle":"说明3","createtime":"2021-05-26 15:33:51","src":"","id":3,"title":"标题3"},{"Subtitle":"说明4","createtime":"2021-05-26 15:33:51","src":"","id":4,"title":"标题4"},{"Subtitle":"说明5","createtime":"2021-05-26 15:33:51","src":"","id":5,"title":"标题5"},{"Subtitle":"说明6","createtime":"2021-05-26 15:33:51","src":"","id":6,"title":"标题6"},{"Subtitle":"说明7","createtime":"2021-05-26 15:33:51","src":"","id":7,"title":"标题7"},{"Subtitle":"说明8","createtime":"2021-05-26 15:33:51","src":"","id":8,"title":"标题8"},{"Subtitle":"说明9","createtime":"2021-05-26 15:33:51","src":"","id":9,"title":"标题9"}] * numFound : 100 * rows : 10 */ @@ -87,11 +87,11 @@ public class TaskSpecificationBean { public static class DataBean { /** - * Subtitle : - * createtime : - * src : http://10.130.23.166:8080/cbt/img/blue.png - * id : 11 - * title : 标题11 + * Subtitle : 说明0 + * createtime : 2021-05-26 15:33:51 + * src : + * id : 0 + * title : 标题0 */ private String Subtitle; diff --git a/app/src/main/java/com/example/myapplication/bean/TaskSpecificationInfo.java b/app/src/main/java/com/example/myapplication/bean/TaskSpecificationInfo.java deleted file mode 100644 index bb82430..0000000 --- a/app/src/main/java/com/example/myapplication/bean/TaskSpecificationInfo.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.example.myapplication.bean; - -public class TaskSpecificationInfo { - -} diff --git a/app/src/main/java/com/example/myapplication/fragment/CapacityEvaluationFragment.java b/app/src/main/java/com/example/myapplication/fragment/CapacityEvaluationFragment.java index 67cbdbf..874458c 100644 --- a/app/src/main/java/com/example/myapplication/fragment/CapacityEvaluationFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/CapacityEvaluationFragment.java @@ -11,7 +11,7 @@ import androidx.recyclerview.widget.LinearLayoutManager; import com.example.myapplication.R; import com.example.myapplication.activity.CapacityEvaluationAdapter; -import com.example.myapplication.activity.ManagementFragment; +import com.example.myapplication.activity.FragmentManagement; import com.example.myapplication.base.BaseFragment; import com.example.myapplication.bean.TaskExplainInfo; import com.example.myapplication.http.Callback; @@ -44,8 +44,8 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC @Override protected void initView() { super.initView(); - ivEvaluationTaskFinish = mView.findViewById(R.id.iv_evaluation_task_finish); - capacityEvaluationRecycler = mView.findViewById(R.id.capacity_evaluation_recycler); + ivEvaluationTaskFinish =findViewById(R.id.iv_evaluation_task_finish); + capacityEvaluationRecycler = findViewById(R.id.capacity_evaluation_recycler); ivEvaluationTaskFinish.setOnClickListener(this::onClick); capacityEvaluationRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); capacityEvaluationRecycler.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL)); @@ -71,7 +71,7 @@ public class CapacityEvaluationFragment extends BaseFragment implements View.OnC capacityEvaluationAdapter.setOnCapacityClick(new CapacityEvaluationAdapter.OnCapacityClick() { @Override public void onClick(int id) { - Intent itemIntent = new Intent(getActivity(), ManagementFragment.class); + Intent itemIntent = new Intent(getActivity(), FragmentManagement.class); itemIntent.putExtra("tag", 12); startActivity(itemIntent); //Toast.makeText(getContext(), "哈哈,成功了"+id, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/example/myapplication/fragment/EventPrefectureFragment.java b/app/src/main/java/com/example/myapplication/fragment/EventPrefectureFragment.java new file mode 100644 index 0000000..4e66df2 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/fragment/EventPrefectureFragment.java @@ -0,0 +1,161 @@ +package com.example.myapplication.fragment; + +import android.content.Intent; +import android.util.Log; +import android.view.View; +import android.widget.ImageView; +import android.widget.Toast; + +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; + +import com.example.myapplication.R; +import com.example.myapplication.activity.WebActivity; +import com.example.myapplication.adapter.EventPrefectureAdapter; +import com.example.myapplication.base.BaseFragment; +import com.example.myapplication.bean.EventPrefectureBean; +import com.example.myapplication.http.Callback; +import com.example.myapplication.http.HttpInterface; +import com.example.myapplication.http.OkGoBuilder; +import com.jcodecraeer.xrecyclerview.ProgressStyle; +import com.jcodecraeer.xrecyclerview.XRecyclerView; + +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + +/** + * 发现-活动专区 + */ +public class EventPrefectureFragment extends BaseFragment implements View.OnClickListener { + + private ImageView ivEventTask; + private XRecyclerView eventRecycler; + private List taskExplainBean; + private EventPrefectureAdapter eventPrefectureAdapter; + private int page = 1; + + @Override + protected int getLayout() { + return R.layout.event_prefecture_fragment; + } + + @Override + protected void initData() { + super.initData(); + taskExplainBean = new ArrayList<>(); + initNetwork(true); + } + + private void initNetwork(boolean b) { + OkGoBuilder.getInstance() + .Builder(getActivity()) + .url(HttpInterface.listEvent) + .method(OkGoBuilder.GET) + .cls(EventPrefectureBean.class) + .json(new JSONObject()) + .callback(new Callback() { + @Override + public void onSuccess(EventPrefectureBean eventPrefectureBean, int id) { + dismissLoadingDialog(); + eventPrefectureAdapter.setDataBeans(eventPrefectureBean.getBody().getData()); + Log.d("TAG", "onSuccess: " + eventPrefectureBean.getMsg() + "sssssssssssss"); + //initEventPrefecture(eventPrefectureBean,b); + } + + @Override + public void onError(Throwable e, int id) { + dismissLoadingDialog(); + Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); + Log.d("TAG", "onError: " + e.getMessage()); + } + }).build(); + } + + private void initEventPrefecture(EventPrefectureBean eventPrefectureBean, boolean start) { + if (eventPrefectureBean.getStatus() == 0) { + if (start) { + if (taskExplainBean.size() > 0) { + taskExplainBean.clear(); + } + if (eventPrefectureBean.getBody() == null) { + Toast.makeText(getActivity(), "没有相关数据", Toast.LENGTH_SHORT).show(); + } else { + taskExplainBean.addAll(eventPrefectureBean.getBody().getData()); + page++; + } + eventPrefectureAdapter.notifyDataSetChanged(); + eventRecycler.refreshComplete(); + } else { + if (eventPrefectureBean.getBody() == null) { + eventRecycler.setNoMore(true); + } else { + taskExplainBean.addAll(eventPrefectureBean.getBody().getData()); + eventPrefectureAdapter.notifyDataSetChanged(); + eventRecycler.loadMoreComplete(); + page++; + } + } + } else if (eventPrefectureBean.getStatus() == 2) { + if (start) { + if (taskExplainBean.size() > 0) { + taskExplainBean.clear(); + eventPrefectureAdapter.notifyDataSetChanged(); + } + eventRecycler.refreshComplete(); + } else { + eventRecycler.setNoMore(true); + } + Toast.makeText(getActivity(), eventPrefectureBean.getMsg(), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getActivity(), eventPrefectureBean.getMsg(), Toast.LENGTH_SHORT).show(); + } + } + + @Override + protected void initView() { + super.initView(); + ivEventTask = findViewById(R.id.iv_event_task); + ivEventTask.setOnClickListener(this::onClick); + eventRecycler = findViewById(R.id.event_recycler); + eventRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); + eventRecycler.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL)); + eventRecycler.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader); + eventRecycler.setLoadingMoreProgressStyle(ProgressStyle.BallRotate); + //取消上拉加载,刷新功能。 + eventRecycler.setPullRefreshEnabled(false); + eventRecycler.setLoadingMoreEnabled(false); + eventPrefectureAdapter = new EventPrefectureAdapter(getActivity()); + eventRecycler.setAdapter(eventPrefectureAdapter); + eventRecycler.getDefaultFootView().setNoMoreHint("已全部加载完毕"); + eventRecycler.setLoadingListener(new XRecyclerView.LoadingListener() { + @Override + public void onRefresh() { + + } + + @Override + public void onLoadMore() { + + } + }); + eventPrefectureAdapter.setClickItem(new EventPrefectureAdapter.clickItem() { + @Override + public void item(int aInt) { + Intent intent = new Intent(getContext(), WebActivity.class); + intent.putExtra("id",aInt); + startActivity(intent); + } + }); + } + + @Override + public void onClick(View v) { + switch (v.getId()) { + case R.id.iv_event_task: + getActivity().finish(); + break; + } + } +} diff --git a/app/src/main/java/com/example/myapplication/fragment/FindFragment.java b/app/src/main/java/com/example/myapplication/fragment/FindFragment.java index a41ebcf..c4f5c02 100644 --- a/app/src/main/java/com/example/myapplication/fragment/FindFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/FindFragment.java @@ -4,8 +4,9 @@ import android.content.Intent; import android.view.View; import android.widget.LinearLayout; + import com.example.myapplication.R; -import com.example.myapplication.activity.ManagementFragment; +import com.example.myapplication.activity.FragmentManagement; import com.example.myapplication.base.BaseFragment; @@ -13,13 +14,12 @@ import com.example.myapplication.base.BaseFragment; * 发现的Fragment * 2021-5-25 */ -public class FindFragment extends BaseFragment implements View.OnClickListener { +public class FindFragment extends BaseFragment implements View.OnClickListener{ private LinearLayout linear_task_prefecture;//任务专区 private LinearLayout linear_task_explain;//任务说明 - private LinearLayout linearRight; private LinearLayout linearEnd; - private LinearLayout linearTaskExplain; + private LinearLayout linear_event_prefecture; @Override protected int getLayout() { @@ -29,13 +29,13 @@ public class FindFragment extends BaseFragment implements View.OnClickListener { @Override protected void initView() { super.initView(); - linear_task_prefecture = mView.findViewById(R.id.linear_task_prefecture); + linear_event_prefecture = findViewById(R.id.linear_event_prefecture); + linear_event_prefecture.setOnClickListener(this::onClick); + linear_task_prefecture =findViewById(R.id.linear_task_prefecture); linear_task_prefecture.setOnClickListener(this::onClick); - linear_task_explain = mView.findViewById(R.id.linear_task_explain); + linear_task_explain =findViewById(R.id.linear_task_explain); linear_task_explain.setOnClickListener(this::onClick); - linearRight = mView.findViewById(R.id.linear_right); - linearRight.setOnClickListener(this::onClick); - linearEnd = mView.findViewById(R.id.linear_end); + linearEnd = findViewById(R.id.linear_end); linearEnd.setOnClickListener(this::onClick); } @@ -49,17 +49,22 @@ public class FindFragment extends BaseFragment implements View.OnClickListener { public void onClick(View v) { switch (v.getId()) { case R.id.linear_task_prefecture: - Intent prefectureIntent = new Intent(getActivity(), ManagementFragment.class); + Intent prefectureIntent = new Intent(getActivity(), FragmentManagement.class); prefectureIntent.putExtra("tag", 7); startActivity(prefectureIntent); break; case R.id.linear_task_explain: - Intent explainIntent = new Intent(getActivity(), ManagementFragment.class); + Intent explainIntent = new Intent(getActivity(), FragmentManagement.class); explainIntent.putExtra("tag", 8); startActivity(explainIntent); break; + case R.id.linear_event_prefecture: + Intent eventIntent = new Intent(getActivity(), FragmentManagement.class); + eventIntent.putExtra("tag",9); + startActivity(eventIntent); + break; case R.id.linear_end: - Intent endIntent = new Intent(getActivity(), ManagementFragment.class); + Intent endIntent = new Intent(getActivity(), FragmentManagement.class); endIntent.putExtra("tag", 11); startActivity(endIntent); break; diff --git a/app/src/main/java/com/example/myapplication/fragment/RecordFragment.java b/app/src/main/java/com/example/myapplication/fragment/RecordFragment.java index 08de20e..ea37ed3 100644 --- a/app/src/main/java/com/example/myapplication/fragment/RecordFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/RecordFragment.java @@ -1,18 +1,7 @@ package com.example.myapplication.fragment; -import android.util.Log; -import android.widget.Toast; - import com.example.myapplication.R; import com.example.myapplication.base.BaseFragment; -import com.example.myapplication.bean.ListBean; -import com.example.myapplication.bean.TaskSpecificationBean; -import com.example.myapplication.http.Callback; -import com.example.myapplication.http.HttpInterface; -import com.example.myapplication.http.OkGoBuilder; - -import org.json.JSONArray; -import org.json.JSONObject; /** * 记录的Fragment @@ -33,24 +22,7 @@ public class RecordFragment extends BaseFragment { public void setUserVisibleHint(boolean isVisibleToUser) { super.setUserVisibleHint(isVisibleToUser); if (isVisibleToUser) { - OkGoBuilder.getInstance() - .Builder(getActivity()) - .url(HttpInterface.listTask) - .method(OkGoBuilder.GET) - .cls(TaskSpecificationBean.class) - .json(new JSONObject()) - .callback(new Callback() { - @Override - public void onSuccess(TaskSpecificationBean gl, int id) { - Toast.makeText(getActivity(),gl.getMsg()+"sssssssssssssssssss", Toast.LENGTH_SHORT).show(); - } - @Override - public void onError(Throwable e, int id) { - Toast.makeText(getActivity(), e.getMessage(), Toast.LENGTH_SHORT).show(); - Log.d("TAG", "onError: "+e.getMessage()); - } - }).build(); } } @Override diff --git a/app/src/main/java/com/example/myapplication/fragment/RegisterFragment.java b/app/src/main/java/com/example/myapplication/fragment/RegisterFragment.java index ba49487..a29b73e 100644 --- a/app/src/main/java/com/example/myapplication/fragment/RegisterFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/RegisterFragment.java @@ -4,7 +4,6 @@ import android.view.View; import android.widget.EditText; import android.widget.ImageView; import android.widget.TextView; -import android.widget.Toast; import com.example.myapplication.R; import com.example.myapplication.base.BaseFragment; @@ -12,7 +11,7 @@ import com.example.myapplication.base.BaseFragment; /** * 注册页面 */ -public class RegisterFragment extends BaseFragment implements View.OnClickListener{ +public class RegisterFragment extends BaseFragment { private EditText etRegisterPhone; @@ -35,19 +34,22 @@ public class RegisterFragment extends BaseFragment implements View.OnClickListen @Override protected void initView() { super.initView(); - ivFinish =mView.findViewById(R.id.iv_finish); - etRegisterPhone = mView.findViewById(R.id.et_register_phone); - etRegisterNote = mView.findViewById(R.id.et_register_note); - registerGetNote = mView.findViewById(R.id.register_get_note); - etRegisterReferrer = mView.findViewById(R.id.et_register_referrer); - etRegisterPaw = mView.findViewById(R.id.et_register_paw); - etRegisterConfirmPaw = mView.findViewById(R.id.et_register_confirm_paw); - ivRegisterCheck = mView.findViewById(R.id.iv_register_check); - haveGoLogin = mView.findViewById(R.id.have_go_login); - tvRegister = mView.findViewById(R.id.tv_register); - - ivFinish.setOnClickListener(this::onClick); - registerGetNote.setOnClickListener(this::onClick); + ivFinish =findViewById(R.id.iv_finish); + etRegisterPhone =findViewById(R.id.et_register_phone); + etRegisterNote = findViewById(R.id.et_register_note); + registerGetNote = findViewById(R.id.register_get_note); + etRegisterReferrer = findViewById(R.id.et_register_referrer); + etRegisterPaw =findViewById(R.id.et_register_paw); + etRegisterConfirmPaw = findViewById(R.id.et_register_confirm_paw); + ivRegisterCheck = findViewById(R.id.iv_register_check); + haveGoLogin = findViewById(R.id.have_go_login); + tvRegister =findViewById(R.id.tv_register); + ivFinish.setOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getActivity().finish(); + } + }); } @@ -57,17 +59,4 @@ public class RegisterFragment extends BaseFragment implements View.OnClickListen super.initData(); } - @Override - public void onClick(View v) { - switch (v.getId()){ - case R.id.iv_finish: - getActivity().finish(); - break; - case R.id.register_get_note: - Toast.makeText(getActivity(), "获取验证码", Toast.LENGTH_SHORT).show(); - break; - - - } - } } \ No newline at end of file diff --git a/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment.java b/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment.java index 89114f9..3b2efa0 100644 --- a/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment.java @@ -10,7 +10,7 @@ import androidx.recyclerview.widget.DividerItemDecoration; import androidx.recyclerview.widget.LinearLayoutManager; import com.example.myapplication.R; -import com.example.myapplication.activity.ManagementFragment; +import com.example.myapplication.activity.FragmentManagement; import com.example.myapplication.activity.TaskExplainAdapter; import com.example.myapplication.base.BaseFragment; import com.example.myapplication.bean.TaskExplainInfo; @@ -42,8 +42,8 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis @Override protected void initView() { super.initView(); - ivFindTaskExplain = mView.findViewById(R.id.iv_find_task_explain); - taskExplainRecycle = mView.findViewById(R.id.task_explain_recycler); + ivFindTaskExplain = findViewById(R.id.iv_find_task_explain); + taskExplainRecycle =findViewById(R.id.task_explain_recycler); ivFindTaskExplain.setOnClickListener(this::onClick); taskExplainRecycle.setLayoutManager(new LinearLayoutManager(getActivity())); @@ -71,7 +71,7 @@ public class TaskExplainFragment extends BaseFragment implements View.OnClickLis taskExplainAdapter.setOnItemClick(new TaskExplainAdapter.OnItemClick() { @Override public void onClick(int pos) { - Intent itemIntent = new Intent(getActivity(), ManagementFragment.class); + Intent itemIntent = new Intent(getActivity(), FragmentManagement.class); itemIntent.putExtra("tag", 10); startActivity(itemIntent); //Toast.makeText(getContext(), "你猜"+pos, Toast.LENGTH_SHORT).show(); diff --git a/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment2.java b/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment2.java index 00a80aa..716f787 100644 --- a/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment2.java +++ b/app/src/main/java/com/example/myapplication/fragment/TaskExplainFragment2.java @@ -43,8 +43,8 @@ public class TaskExplainFragment2 extends BaseFragment implements View.OnClickLi @Override protected void initView() { super.initView(); - ivTaskExplain2 = mView.findViewById(R.id.iv_task_explain2_finish); - taskExplain2Recycler = mView.findViewById(R.id.task_explain2_recycler); + ivTaskExplain2 = findViewById(R.id.iv_task_explain2_finish); + taskExplain2Recycler = findViewById(R.id.task_explain2_recycler); ivTaskExplain2.setOnClickListener(this::onClick); taskExplain2Recycler.setLayoutManager(new LinearLayoutManager(getActivity())); taskExplain2Recycler.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); diff --git a/app/src/main/java/com/example/myapplication/fragment/TaskPrefectureFragment.java b/app/src/main/java/com/example/myapplication/fragment/TaskPrefectureFragment.java index 2ce3836..1169857 100644 --- a/app/src/main/java/com/example/myapplication/fragment/TaskPrefectureFragment.java +++ b/app/src/main/java/com/example/myapplication/fragment/TaskPrefectureFragment.java @@ -1,12 +1,30 @@ package com.example.myapplication.fragment; +import android.content.Intent; +import android.util.Log; import android.view.View; import android.widget.ImageView; +import android.widget.Toast; + +import androidx.recyclerview.widget.DividerItemDecoration; +import androidx.recyclerview.widget.LinearLayoutManager; import com.example.myapplication.R; +import com.example.myapplication.activity.WebActivity; +import com.example.myapplication.adapter.TaskPrefectureAdapter; import com.example.myapplication.base.BaseFragment; +import com.example.myapplication.bean.TaskExplainBean; +import com.example.myapplication.http.Callback; +import com.example.myapplication.http.HttpInterface; +import com.example.myapplication.http.OkGoBuilder; +import com.jcodecraeer.xrecyclerview.ProgressStyle; import com.jcodecraeer.xrecyclerview.XRecyclerView; +import org.json.JSONObject; + +import java.util.ArrayList; +import java.util.List; + /** * 发现-任务专区 */ @@ -14,7 +32,9 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick private ImageView mIvFindTask; private XRecyclerView taskRecycler; - + private List dataBeanList; + private TaskPrefectureAdapter taskPrefectureAdapter; + private int page=1; @Override protected int getLayout() { return R.layout.task_prefecture_fragment; @@ -23,14 +43,109 @@ public class TaskPrefectureFragment extends BaseFragment implements View.OnClick @Override protected void initView() { super.initView(); - mIvFindTask = mView.findViewById(R.id.iv_find_task); + mIvFindTask = findViewById(R.id.iv_find_task); mIvFindTask.setOnClickListener(this::onClick); - taskRecycler = mView.findViewById(R.id.task_recycler); + taskRecycler = findViewById(R.id.task_recycler); + taskRecycler.setLayoutManager(new LinearLayoutManager(getActivity())); + taskRecycler.addItemDecoration(new DividerItemDecoration(getActivity(),DividerItemDecoration.VERTICAL)); + taskRecycler.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader); + taskRecycler.setLoadingMoreProgressStyle(ProgressStyle.BallRotate); + //取消上拉加载,刷新功能。 + taskRecycler.setPullRefreshEnabled(false); + taskRecycler.setLoadingMoreEnabled(false); + taskPrefectureAdapter = new TaskPrefectureAdapter(getActivity()); + taskRecycler.setAdapter(taskPrefectureAdapter); + taskRecycler.getDefaultFootView().setNoMoreHint("已全部加载完毕"); + taskRecycler.setLoadingListener(new XRecyclerView.LoadingListener() { + @Override + public void onRefresh() { + + } + + @Override + public void onLoadMore() { + + } + }); + taskPrefectureAdapter.setClickItem(new TaskPrefectureAdapter.clickItem() { + @Override + public void item(int id) { + Intent intent = new Intent(getContext(), WebActivity.class); + intent.putExtra("id",id); + startActivity(intent); + } + }); } @Override protected void initData() { super.initData(); + dataBeanList=new ArrayList<>(); + initNetwork(true); + + } + + private void initNetwork(boolean start) { + OkGoBuilder.getInstance() + .Builder(getActivity()) + .url(HttpInterface.listTask) + .method(OkGoBuilder.GET) + .cls(TaskExplainBean.class) + .json(new JSONObject()) + .callback(new Callback() { + @Override + public void onSuccess(TaskExplainBean taskSpecificationBean, int id) { + dismissLoadingDialog(); + taskPrefectureAdapter.setDataBeans(taskSpecificationBean.getBody().getData()); + Log.d("TAG", "onSuccess: "+taskSpecificationBean.getMsg()+""); + //initTaskSpecification(taskSpecificationBean,start); + } + @Override + public void onError(Throwable e, int id) { + dismissLoadingDialog(); + Log.d("TAG", "onError: "+e.getMessage()); + } + }).build(); + } + + private void initTaskSpecification(TaskExplainBean taskSpecificationBean, boolean start) { + if (taskSpecificationBean.getStatus()==0) { + if (start) { + if (dataBeanList.size() > 0) { + dataBeanList.clear(); + } + if (taskSpecificationBean.getBody() == null) { + Toast.makeText(getActivity(), "没有相关数据", Toast.LENGTH_SHORT).show(); + } else { + dataBeanList.addAll(taskSpecificationBean.getBody().getData()); + page++; + } + taskPrefectureAdapter.notifyDataSetChanged(); + taskRecycler.refreshComplete(); + } else { + if (taskSpecificationBean.getBody() == null) { + taskRecycler.setNoMore(true); + } else { + dataBeanList.addAll(taskSpecificationBean.getBody().getData()); + taskPrefectureAdapter.notifyDataSetChanged(); + taskRecycler.loadMoreComplete(); + page++; + } + } + } else if (taskSpecificationBean.getStatus() == 2) { + if (start) { + if (dataBeanList.size() > 0) { + dataBeanList.clear(); + taskPrefectureAdapter.notifyDataSetChanged(); + } + taskRecycler.refreshComplete(); + }else { + taskRecycler.setNoMore(true); + } + Toast.makeText(getActivity(), taskSpecificationBean.getMsg(), Toast.LENGTH_SHORT).show(); + } else { + Toast.makeText(getActivity(), taskSpecificationBean.getMsg(), Toast.LENGTH_SHORT).show(); + } } @Override diff --git a/app/src/main/java/com/example/myapplication/http/HttpInterface.java b/app/src/main/java/com/example/myapplication/http/HttpInterface.java index 3168124..c8277c3 100644 --- a/app/src/main/java/com/example/myapplication/http/HttpInterface.java +++ b/app/src/main/java/com/example/myapplication/http/HttpInterface.java @@ -4,5 +4,7 @@ public class HttpInterface { //http://172.21.91.160:8000/api/user/list public static final String IP = "http://172.21.91.160:8000/api/1/"; public static final String listTask = IP + "task/list";//任务专区,活动专区 + public static final String listEvent = IP + "task/list";//任务专区,活动专区 + public static final String listInfo = IP + "task/info";//任务说明 public static final String listTaskExplain = IP + "task/info";//任务说明 } diff --git a/app/src/main/java/com/example/myapplication/util/CustomScrollView.java b/app/src/main/java/com/example/myapplication/util/CustomScrollView.java new file mode 100644 index 0000000..4429107 --- /dev/null +++ b/app/src/main/java/com/example/myapplication/util/CustomScrollView.java @@ -0,0 +1,34 @@ +package com.example.myapplication.util; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.GestureDetector; +import android.view.MotionEvent; +import android.widget.ScrollView; + +public class CustomScrollView extends ScrollView { + private GestureDetector mGestureDetector; + OnTouchListener mGestureListener; + + public CustomScrollView(Context context, AttributeSet attrs) { + super(context, attrs); + mGestureDetector = new GestureDetector(new YScrollDetector()); + setFadingEdgeLength(0); + } + + @Override + public boolean onInterceptTouchEvent(MotionEvent ev) { + return super.onInterceptTouchEvent(ev) && mGestureDetector.onTouchEvent(ev); + } + + // 如果水平滑动返回false + class YScrollDetector extends GestureDetector.SimpleOnGestureListener { + @Override + public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) { + if(Math.abs(distanceY) > Math.abs(distanceX)) { + return true; + } + return false; + } + } +} diff --git a/app/src/main/res/drawable/ic_baseline_arrow.xml b/app/src/main/res/drawable/ic_baseline_arrow.xml index f632160..fa122e1 100644 --- a/app/src/main/res/drawable/ic_baseline_arrow.xml +++ b/app/src/main/res/drawable/ic_baseline_arrow.xml @@ -1,10 +1,5 @@ - - + + diff --git a/app/src/main/res/drawable/ic_baseline_arrow_back.xml b/app/src/main/res/drawable/ic_baseline_arrow_back.xml new file mode 100644 index 0000000..f632160 --- /dev/null +++ b/app/src/main/res/drawable/ic_baseline_arrow_back.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable/icon_arrow.xml b/app/src/main/res/drawable/icon_arrow.xml new file mode 100644 index 0000000..01b2c76 --- /dev/null +++ b/app/src/main/res/drawable/icon_arrow.xml @@ -0,0 +1,5 @@ + + + diff --git a/app/src/main/res/drawable/icon_capacity_evaluation.png b/app/src/main/res/drawable/icon_capacity_evaluation.png new file mode 100644 index 0000000000000000000000000000000000000000..eee0f4a5edbd19a81e02cb4ee47cabc34940a1d4 GIT binary patch literal 937 zcmV;a16KTrP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D13pPaK~!i%?U~-^2@_K)m+WNAOPYRt2S^(t>|byixBeMMZEC7K=;mwrD{Yx3;y~?e4~$ zrCGjYPBKYmm}Q^`esp)+>ZV|+#jj8`tQ-MYMkr<_#!_J$7<Kze`XuB-ur6;KuC!$6%zRsbv%tO0`+P!;CGkPBKZR{%re;!?-@EC=Sp@LqwOIdJtw z&l=a}wZ!~w8O(>_odbAyU=0}3`0`5EdY{6Z{@(mG^I^z`94o-Vv7!wavWQ&VtHXR4 z-gN+qeFBrlG2DK?Gk<;lWd9_8515Y&>XRx2z=;`a=;E4}@mjA5FTV`cg}WW^ykI^q zs86a8AaysI!o$vw;G||gE~UFsjILHc4?wMcB7<80ObnHsN&r?wF06k^(y0W5uw@6i ztdLw-|At37=Ryz`3>>twPMZQl2MerE!2l2*9u{>rdP{?Y<&a7PKsY6CIs}T}*bf&E zMFoJcfx_ivW_1IfvTxofIsk+@frD0NS{InGp)v0&DFB4K0d8q^Uk&t!etmZvpOOO@ z!3Zm3%(f#0+M}P;!i};67{M1Ctk(UX*eA@BR{f`b(K-#VSSj@%M}`KaIrQ#W00000 LNkvXXu0mjf=OUoX literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_event_prefecture.png b/app/src/main/res/drawable/icon_event_prefecture.png new file mode 100644 index 0000000000000000000000000000000000000000..4534c108eeb9dbf74fd87ae458299b05e89a06e9 GIT binary patch literal 8110 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 NpslX2R;*%!`9II}8qfd$ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_task_prefecture.png b/app/src/main/res/drawable/icon_task_prefecture.png new file mode 100644 index 0000000000000000000000000000000000000000..a1b2fd403806ecc9ab64f54776e6840b68a8f8fb GIT binary patch literal 10123 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/icon_task_specification.png b/app/src/main/res/drawable/icon_task_specification.png new file mode 100644 index 0000000000000000000000000000000000000000..919df9be6ee55c8e92fc4d999e79d1bf3b412666 GIT binary patch literal 847 zcmV-V1F-ywP)Px#1ZP1_K>z@;j|==^1poj532;bRa{vGi!vFvd!vV){sAK>D0^~_VK~!i%?V8PQ z(?Ar3yJc4-#HJEr#h=tI@4=E+V8NF6;0aiO#1m9ND?ls}8=xsEiD(j9HKCP|3MqC{ zXYfT_>o`8P$CHeUC64q-R&r;~J*^#&Cs{EK*Z%-ar_q`D7KNri9sfa&$MI`Ev~Yk~ z%zk)kK8HUmA!B6hqH+!p&LY~F3o@6hDhD`=|85=9#G>p5KTPECKdBU8I1Q-zG7*m| zvJTJ<$JEdV;$N{=nkRFPZ8{n{p3)Yt5H2m9DRy2Uz zGucGvN#31;2I$0}$!wCF?N{c)$Bk01e%dlS!AUYsj<4)&(b{>gw_m0_73qm76JRo% z(Fp`*Sj6h~GjlP9y;lVD7T6s-6Mzj=n3)flw=%EB1(;uKqyik2tSXtA516+it5{Sj z02_dy$*uT;zPV_st#Fizouh^wbo`*$Gj1gbATtugIureIr9N^OS zb91?srRYwRqI-r&7?u;0pXckf-Q4q;6rTF1PR9y~830pvwijMz4Vb;$j%A82Ud&X>1I z9rH%^VpO%BLbfn(WE7E8sE&)+7Uqr6i&(^p5oYEC=8d4713W(J)ARq)Q7=`8JRElE z7?}&}m^XrQ4!{~wunu9h3f3`i1eFR002ovPDHLkV1f(Nb~FG0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_web.xml b/app/src/main/res/layout/activity_web.xml new file mode 100644 index 0000000..bfb09e2 --- /dev/null +++ b/app/src/main/res/layout/activity_web.xml @@ -0,0 +1,51 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/event_prefecture_fragment.xml b/app/src/main/res/layout/event_prefecture_fragment.xml new file mode 100644 index 0000000..8f91e28 --- /dev/null +++ b/app/src/main/res/layout/event_prefecture_fragment.xml @@ -0,0 +1,42 @@ + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/event_prefecture_item.xml b/app/src/main/res/layout/event_prefecture_item.xml new file mode 100644 index 0000000..0725788 --- /dev/null +++ b/app/src/main/res/layout/event_prefecture_item.xml @@ -0,0 +1,40 @@ + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/find_fragment.xml b/app/src/main/res/layout/find_fragment.xml index 596e19a..468e3c7 100644 --- a/app/src/main/res/layout/find_fragment.xml +++ b/app/src/main/res/layout/find_fragment.xml @@ -15,168 +15,182 @@ + style="@style/text_style_toolbar_title" + android:textColor="#fff" + android:text="发现" /> - - - - - - - - - - - - - - - - - - - - - - - - - - + > + + + + + + + + + + + + + + + + + + + - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/task_prefecture_fragment.xml b/app/src/main/res/layout/task_prefecture_fragment.xml index 8614ad0..7477525 100644 --- a/app/src/main/res/layout/task_prefecture_fragment.xml +++ b/app/src/main/res/layout/task_prefecture_fragment.xml @@ -10,7 +10,7 @@ android:id="@+id/rl_find" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="#fff" + android:background="#1BA5F1" android:paddingTop="@dimen/top_pind_sp" android:orientation="horizontal" app:layout_constraintEnd_toEndOf="parent" @@ -23,20 +23,15 @@ android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="15dp" - android:src="@drawable/ic_baseline_arrow" + android:src="@drawable/icon_arrow" /> + android:text="任务专区" /> + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0fec131..af3ab4d 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1,5 +1,5 @@ - navinfo + mapp HomeActivity First Fragment @@ -9,6 +9,4 @@ Hello first fragment Hello second fragment. Arg: %1$s - - Hello blank fragment \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 00c0626..4e39ee6 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -20,5 +20,26 @@ @android:color/darker_gray @android:color/darker_gray - + + + + \ No newline at end of file