更改包名

This commit is contained in:
wds
2021-06-01 10:20:13 +08:00
parent aa4d7198b8
commit d46f7e3019
79 changed files with 247 additions and 295 deletions

View File

@@ -0,0 +1,431 @@
package com.navinfo.outdoor.activity;
import android.content.Intent;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseActivity;
import com.navinfo.outdoor.fragment.AboutFragment;
import com.navinfo.outdoor.fragment.CapacityEvaluationFragment;
import com.navinfo.outdoor.fragment.CapacityEvaluationFragment2;
import com.navinfo.outdoor.fragment.CapacityMeasurementFragment;
import com.navinfo.outdoor.fragment.ContactFragment;
import com.navinfo.outdoor.fragment.EventPrefectureFragment;
import com.navinfo.outdoor.fragment.FindFragment;
import com.navinfo.outdoor.fragment.ForgetPawFragment;
import com.navinfo.outdoor.fragment.GatheringFragment;
import com.navinfo.outdoor.fragment.GradeFragment;
import com.navinfo.outdoor.fragment.IssueFragment;
import com.navinfo.outdoor.fragment.MapDownloadFragment;
import com.navinfo.outdoor.fragment.MineFragment;
import com.navinfo.outdoor.fragment.PrivilegeFragment;
import com.navinfo.outdoor.fragment.RecordFragment;
import com.navinfo.outdoor.fragment.SetFragment;
import com.navinfo.outdoor.fragment.TaskExWebFragment;
import com.navinfo.outdoor.fragment.TaskExplainFragment;
import com.navinfo.outdoor.fragment.TaskExplainFragment2;
import com.navinfo.outdoor.fragment.TaskPrefectureFragment;
import com.navinfo.outdoor.fragment.RegisterFragment;
import com.navinfo.outdoor.fragment.TreasureFragment;
import com.navinfo.outdoor.fragment.UserDataFragment;
import com.navinfo.outdoor.fragment.WithdrawFragment;
import com.gyf.immersionbar.ImmersionBar;
import androidx.annotation.Nullable;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
/**
* fragment 管理作用:
*/
public class FragmentManagement extends BaseActivity {
private FragmentManager fragmentManager;
private int fourthly_tag;
private MineFragment mineFragment;//我的fragment -1
private FindFragment findFragment;//发现的fragment -2
private RecordFragment recordFragment;//纪录的fragment -3
private TreasureFragment treasureFragment;//寻宝的fragment -4
private RegisterFragment registerFragment;//注册的fragment -5
private ForgetPawFragment forgetPawFragment;//忘记密码fragment -6
private TaskPrefectureFragment taskPrefectureFragment;//发现-任务专区的fragment -7
private TaskExplainFragment taskExplainFragment;//发现-任务说明的fragment -8
private EventPrefectureFragment eventPrefectureFragment;//发现-活动专区的fragment -9
private TaskExplainFragment2 taskExplainFragment2;//发现-任务说明点击Item进入fragment -10
private CapacityEvaluationFragment capacityEvaluationFragment;//发现-能力测评fragment -11
private CapacityEvaluationFragment2 capacityEvaluationFragment2;//发现-能力测评2的fragment -12
private TaskExWebFragment taskExWebFragment;//发现-任务说明点击Item进入Web页面的fragment -13
private CapacityMeasurementFragment capacityMeasurementFragment;//发现-能力测评item点击跳转web的fragment -14
private WithdrawFragment withdrawFragment;//我的-提现的fragment -15
private UserDataFragment userDataFragment;//我的-用户资料的fragment -16
private GradeFragment gradeFragment;//我的-我的等级的fragment -17
private PrivilegeFragment privilegeFragment;//我的-我的特权的fragment -18
private MapDownloadFragment mapDownloadFragment;//我的-地图下载的fragment -19
private IssueFragment issueFragment;//我的-常见问题的fragment -20
private ContactFragment contactFragment;//我的-联系我们的fragment -21
private SetFragment setFragment;//我的-设置的fragment -22
private AboutFragment aboutFragment;//我的-关于的fragment -23
private GatheringFragment gatheringFragment;//我的-用户资料-收款信息的fragment -24
@Override
protected int getLayout() {
return R.layout.management_fragment;
}
@Override
protected void initView() {
super.initView();
fourthly_tag = getIntent().getIntExtra("tag", 0);
fragmentManager = getSupportFragmentManager();
if (fourthly_tag != 0) {
selectorFragment(fourthly_tag);
}
setZtlTextColor();
}
//隐藏所有Fragment
private void hideAllFragment(FragmentTransaction fragmentTransaction) {
if (mineFragment != null)//我的fragment -1
fragmentTransaction.hide(mineFragment);
if (findFragment != null)//发现的fragment -2
fragmentTransaction.hide(findFragment);
if (recordFragment != null)//记录的fragment -3
fragmentTransaction.hide(recordFragment);
if (treasureFragment != null)//寻宝的fragment -4
fragmentTransaction.hide(treasureFragment);
if (registerFragment != null)//注册的fragment -5
fragmentTransaction.hide(registerFragment);
if (forgetPawFragment != null)//忘记密码fragment -6
fragmentTransaction.hide(forgetPawFragment);
if (taskPrefectureFragment != null)//发现-任务专区的fragment -7
fragmentTransaction.hide(taskPrefectureFragment);
if (taskExplainFragment != null) //发现 - 任务说明的fragment -8
fragmentTransaction.hide(taskExplainFragment);
if (eventPrefectureFragment != null)//发现-活动专区的fragment -9
fragmentTransaction.hide(eventPrefectureFragment);
if (taskExplainFragment2 != null)//发现-任务说明点击Item进入fragment -10
fragmentTransaction.hide(taskExplainFragment2);
if (capacityEvaluationFragment != null)//发现-能力测评fragment -11
fragmentTransaction.hide(capacityEvaluationFragment);
if (capacityEvaluationFragment2 != null)//发现-能力测评2的fragment -12
fragmentTransaction.hide(capacityEvaluationFragment2);
if (taskExWebFragment != null)//发现-任务说明点击Item进入Web页面的fragment -13
fragmentTransaction.hide(taskExWebFragment);
if (capacityMeasurementFragment != null)//发现-能力测评item点击跳转web的fragment -14
fragmentTransaction.hide(capacityMeasurementFragment);
if (withdrawFragment != null)//我的-提现的fragment -15
fragmentTransaction.hide(withdrawFragment);
if (userDataFragment != null)//我的-用户资料的fragment -16
fragmentTransaction.hide(userDataFragment);
if (gradeFragment != null)//我的-我的等级的fragment -17
fragmentTransaction.hide(gradeFragment);
if (privilegeFragment != null)//我的-我的特权的fragment -18
fragmentTransaction.hide(privilegeFragment);
if (mapDownloadFragment != null)//我的-地图下载的fragment -19
fragmentTransaction.hide(mapDownloadFragment);
if (issueFragment != null)//我的-常见问题的fragment -20
fragmentTransaction.hide(issueFragment);
if (contactFragment != null)//我的-联系我们的fragment -21
fragmentTransaction.hide(contactFragment);
if (setFragment != null)//我的-设置的fragment -22
fragmentTransaction.hide(setFragment);
if (aboutFragment != null)//我的-关于的fragment -23
fragmentTransaction.hide(aboutFragment);
if (gatheringFragment != null)//我的-用户资料-收款信息的fragment -24
fragmentTransaction.hide(gatheringFragment);
}
public void selectorFragment(int i) {
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
hideAllFragment(fragmentTransaction);
switch (i) {
case 1://我的fragment
if (mineFragment == null) {
mineFragment = new MineFragment();
fragmentTransaction.add(R.id.frame_layout, mineFragment);
} else {
fragmentTransaction.show(mineFragment);
}
/* Bundle bundle1 = new Bundle();
bundle1.putString("grad", getIntent().getStringExtra("grad"));
mineFragment.setArguments(bundle1);*/
break;
case 2://发现的fragment
if (findFragment == null) {
findFragment = new FindFragment();
fragmentTransaction.add(R.id.frame_layout, findFragment);
} else {
fragmentTransaction.show(findFragment);
}
break;
case 3://纪录的fragment
if (recordFragment == null) {
recordFragment = new RecordFragment();
fragmentTransaction.add(R.id.frame_layout, recordFragment);
} else {
fragmentTransaction.show(recordFragment);
}
break;
case 4://寻宝的fragment
if (treasureFragment == null) {
treasureFragment = new TreasureFragment();
fragmentTransaction.add(R.id.frame_layout, treasureFragment);
} else {
fragmentTransaction.show(treasureFragment);
}
break;
case 5://注册的fragment
if (registerFragment == null) {
registerFragment = new RegisterFragment();
fragmentTransaction.add(R.id.frame_layout, registerFragment);
} else {
fragmentTransaction.show(registerFragment);
}
break;
case 6://忘记密码fragment
if (forgetPawFragment == null) {
forgetPawFragment = new ForgetPawFragment();
fragmentTransaction.add(R.id.frame_layout, forgetPawFragment);
} else {
fragmentTransaction.show(forgetPawFragment);
}
break;
case 7://发现-任务专区的fragment
if (taskPrefectureFragment == null) {
taskPrefectureFragment = new TaskPrefectureFragment();
fragmentTransaction.add(R.id.frame_layout, taskPrefectureFragment);
} else {
fragmentTransaction.show(taskPrefectureFragment);
}
break;
case 8: //发现 - 任务说明的fragment
if (taskExplainFragment == null) {
taskExplainFragment = new TaskExplainFragment();
fragmentTransaction.add(R.id.frame_layout, taskExplainFragment);
} else {
fragmentTransaction.show(taskExplainFragment);
}
break;
case 9://发现-活动专区的fragment
if (eventPrefectureFragment == null) {
eventPrefectureFragment = new EventPrefectureFragment();
fragmentTransaction.add(R.id.frame_layout, eventPrefectureFragment);
} else {
fragmentTransaction.show(eventPrefectureFragment);
}
break;
case 10://发现-任务说明点击Item进入fragment
if (taskExplainFragment2 == null) {
taskExplainFragment2 = new TaskExplainFragment2();
fragmentTransaction.add(R.id.frame_layout, taskExplainFragment2);
} else {
fragmentTransaction.show(taskExplainFragment2);
}
break;
case 11://发现-能力测评fragment -
if (capacityEvaluationFragment == null) {
capacityEvaluationFragment = new CapacityEvaluationFragment();
fragmentTransaction.add(R.id.frame_layout, capacityEvaluationFragment);
} else {
fragmentTransaction.show(capacityEvaluationFragment);
}
break;
case 12://发现-能力测评2的fragment -
if (capacityEvaluationFragment2 == null) {
capacityEvaluationFragment2 = new CapacityEvaluationFragment2();
fragmentTransaction.add(R.id.frame_layout, capacityEvaluationFragment2);
} else {
fragmentTransaction.show(capacityEvaluationFragment2);
}
break;
case 13://发现-任务说明点击Item进入Web页面的fragment
if (taskExWebFragment == null) {
taskExWebFragment = new TaskExWebFragment();
fragmentTransaction.add(R.id.frame_layout, taskExWebFragment);
} else {
fragmentTransaction.show(taskExWebFragment);
}
break;
case 14://发现-能力测评item点击跳转测试的fragment
if (capacityMeasurementFragment == null) {
capacityMeasurementFragment = new CapacityMeasurementFragment();
fragmentTransaction.add(R.id.frame_layout, capacityMeasurementFragment);
} else {
fragmentTransaction.show(capacityMeasurementFragment);
}
break;
case 15://我的-提现的fragment
if (withdrawFragment == null) {
withdrawFragment = new WithdrawFragment();
fragmentTransaction.add(R.id.frame_layout, withdrawFragment);
} else {
fragmentTransaction.show(withdrawFragment);
}
break;
case 16://我的-用户资料的fragment
if (userDataFragment == null) {
userDataFragment = new UserDataFragment();
fragmentTransaction.add(R.id.frame_layout, userDataFragment);
} else {
fragmentTransaction.show(userDataFragment);
}
break;
case 17://我的-我的等级的fragment
if (gradeFragment == null) {
gradeFragment = new GradeFragment();
fragmentTransaction.add(R.id.frame_layout, gradeFragment);
} else {
fragmentTransaction.show(gradeFragment);
}
break;
case 18://我的-我的特权的fragment
if (privilegeFragment == null) {
privilegeFragment = new PrivilegeFragment();
fragmentTransaction.add(R.id.frame_layout, privilegeFragment);
} else {
fragmentTransaction.show(privilegeFragment);
}
break;
case 19://我的-地图下载的fragment
if (mapDownloadFragment == null) {
mapDownloadFragment = new MapDownloadFragment();
fragmentTransaction.add(R.id.frame_layout, mapDownloadFragment);
} else {
fragmentTransaction.show(mapDownloadFragment);
}
break;
case 20://我的-常见问题的fragment
if (issueFragment == null) {
issueFragment = new IssueFragment();
fragmentTransaction.add(R.id.frame_layout, issueFragment);
} else {
fragmentTransaction.show(issueFragment);
}
break;
case 21://我的-联系我们的fragment
if (contactFragment == null) {
contactFragment = new ContactFragment();
fragmentTransaction.add(R.id.frame_layout, contactFragment);
} else {
fragmentTransaction.show(contactFragment);
}
break;
case 22://我的-设置的fragment
if (setFragment == null) {
setFragment = new SetFragment();
fragmentTransaction.add(R.id.frame_layout, setFragment);
} else {
fragmentTransaction.show(setFragment);
}
break;
case 23://我的-关于的fragment
if (aboutFragment == null) {
aboutFragment = new AboutFragment();
fragmentTransaction.add(R.id.frame_layout, aboutFragment);
} else {
fragmentTransaction.show(aboutFragment);
}
break;
case 24://我的-用户资料-收款信息的fragment
if (gatheringFragment == null) {
gatheringFragment = new GatheringFragment();
fragmentTransaction.add(R.id.frame_layout, gatheringFragment);
} else {
fragmentTransaction.show(gatheringFragment);
}
break;
}
fragmentTransaction.commit();
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (fourthly_tag) {
case 1:
mineFragment.onActivityResult(requestCode, resultCode, data);
break;
case 2:
findFragment.onActivityResult(requestCode, resultCode, data);
break;
case 3:
recordFragment.onActivityResult(requestCode, resultCode, data);
break;
case 4:
treasureFragment.onActivityResult(requestCode, resultCode, data);
break;
case 5:
registerFragment.onActivityResult(requestCode, resultCode, data);
break;
case 6:
forgetPawFragment.onActivityResult(requestCode, resultCode, data);
break;
case 7:
taskPrefectureFragment.onActivityResult(requestCode, resultCode, data);
break;
case 8:
taskExplainFragment.onActivityResult(requestCode, resultCode, data);
break;
case 9:
eventPrefectureFragment.onActivityResult(requestCode, resultCode, data);
break;
case 10:
taskExplainFragment2.onActivityResult(requestCode, resultCode, data);
break;
case 11:
capacityEvaluationFragment.onActivityResult(requestCode, resultCode, data);
break;
case 12:
capacityEvaluationFragment2.onActivityResult(requestCode, resultCode, data);
break;
case 13:
taskExWebFragment.onActivityResult(requestCode, resultCode, data);
break;
case 14:
capacityMeasurementFragment.onActivityResult(requestCode, resultCode, data);
break;
case 15:
withdrawFragment.onActivityResult(requestCode, resultCode, data);
break;
case 16:
userDataFragment.onActivityResult(requestCode, resultCode, data);
break;
case 17:
gradeFragment.onActivityResult(requestCode, resultCode, data);
break;
case 18:
privilegeFragment.onActivityResult(requestCode, resultCode, data);
break;
case 19:
mapDownloadFragment.onActivityResult(requestCode, resultCode, data);
break;
case 20:
issueFragment.onActivityResult(requestCode, resultCode, data);
break;
case 21:
contactFragment.onActivityResult(requestCode, resultCode, data);
break;
case 22:
setFragment.onActivityResult(requestCode, resultCode, data);
break;
case 23:
aboutFragment.onActivityResult(requestCode, resultCode, data);
break;
case 24:
gatheringFragment.onActivityResult(requestCode, resultCode, data);
break;
}
}
private void setZtlTextColor() {
ImmersionBar.with(this).statusBarDarkFont(true, 0.2f)
//原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度
.init();
}
}

View File

@@ -0,0 +1,98 @@
package com.navinfo.outdoor.activity;
import com.navinfo.outdoor.base.BaseActivity;
import com.navinfo.outdoor.fragment.FindFragment;
import com.navinfo.outdoor.fragment.MineFragment;
import com.navinfo.outdoor.fragment.RecordFragment;
import com.navinfo.outdoor.fragment.TreasureFragment;
import com.navinfo.outdoor.util.NoSlideViewPager;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentPagerAdapter;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import com.navinfo.outdoor.R;
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[] 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};
@Override
protected int getLayout() {
return R.layout.activity_home;
}
@Override
protected void initView() {
super.initView();
ImmersionBar.with(this)
.statusBarDarkFont(true, 0.2f)
//原理:如果当前设备支持状态栏字体变色,会设置状态栏字体为黑色,如果当前设备不支持状态栏字体变色,会使当前状态栏加上透明度,否则不执行透明度
.init();
mTab=findViewById(R.id.tab_layout);
mViewPager=findViewById(R.id.no_slide_view_pager);
ArrayList<Fragment> fragments = new ArrayList<>();
fragments.add(new TreasureFragment());
fragments.add(new RecordFragment());
fragments.add(new FindFragment());
fragments.add(new MineFragment());
mViewPager.setOffscreenPageLimit(3);
mViewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {
@Override
public Fragment getItem(int i) {
return fragments.get(i);
}
@Override
public int getCount() {
return fragments.size();
}
});
mViewPager.setCanScroll(true);
mViewPager.setNoScrollAnim(false);
mTab.setupWithViewPager(mViewPager);
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
public void onTabSelected(TabLayout.Tab tab) {
mTab.getTabAt(tab.getPosition()).setIcon(pic[tab.getPosition()]);
}
//点击table layout效果
@Override
public void onTabUnselected(TabLayout.Tab tab) {
mTab.getTabAt(tab.getPosition()).setIcon(pic1[tab.getPosition()]);
}
@Override
public void onTabReselected(TabLayout.Tab tab) {
}
});
}
public View getTabView(String name,int image) {
View view = LayoutInflater.from(this).inflate(R.layout.item_tab, null);
TextView txt_title = (TextView) view.findViewById(R.id.txt_title);
txt_title.setText(name);
ImageView img_title = (ImageView) view.findViewById(R.id.img_title);
img_title.setImageResource(image);
return view;
}
}

View File

@@ -0,0 +1,64 @@
package com.navinfo.outdoor.activity;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.viewpager.widget.ViewPager;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.adapter.ImagePagerAdapter;
import com.navinfo.outdoor.base.BaseActivity;
import java.util.ArrayList;
/**
* 点击查看大图
*/
public class ImageShowActivity extends BaseActivity implements View.OnClickListener {
private ViewPager image_pager;
private TextView page_number;
private ImageView download;
private ArrayList<String> imgUrl;
private ImagePagerAdapter mAdapter;
@Override
protected int getLayout() {
return R.layout.activity_image_show;
}
@Override
protected void initData() {
super.initData();
imgUrl = getIntent().getStringArrayListExtra("info");
Log.d("ImageShowActivity", "initData-----------------: "+imgUrl);
page_number.setText("1" + "/" + imgUrl.size());
}
@Override
protected void initView() {
super.initView();
image_pager = (ViewPager) findViewById(R.id.image_pager);
page_number = (TextView) findViewById(R.id.page_number);
download = (ImageView) findViewById(R.id.download);
download.setOnClickListener(this);
initViewPager();
}
private void initViewPager() {
if (imgUrl != null && imgUrl.size() != 0) {
mAdapter = new ImagePagerAdapter(getApplicationContext(), imgUrl);
image_pager.setAdapter(mAdapter);
}
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.download:
break;
}
}
}

View File

@@ -0,0 +1,65 @@
package com.navinfo.outdoor.activity;
import android.content.Intent;
import android.view.View;
import android.widget.EditText;
import android.widget.TextView;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseActivity;
/**
* 登录页
*/
public class LoginActivity extends BaseActivity implements View.OnClickListener {
private TextView tvRegister;
private android.widget.EditText etLoginName;
private android.widget.EditText etLoginPaw;
private TextView tvForgetPaw;
private TextView tvLogin;
@Override
protected int getLayout() {
return R.layout.activity_login;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
tvRegister = (TextView) findViewById(R.id.tv_register);
etLoginName = (EditText) findViewById(R.id.et_login_name);
etLoginPaw = (EditText) findViewById(R.id.et_login_paw);
tvForgetPaw = (TextView) findViewById(R.id.tv_forget_paw);
tvLogin = (TextView) findViewById(R.id.tv_login);
tvLogin.setOnClickListener(this::onClick);
tvRegister.setOnClickListener(this);
tvForgetPaw.setOnClickListener(this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.tv_register:
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, FragmentManagement.class);
forgetPaw.putExtra("tag", 6);
startActivity(forgetPaw);
break;
case R.id.tv_login:
Intent intent = new Intent(this, HomeActivity.class);
startActivity(intent);
break;
}
}
}

View File

@@ -0,0 +1,61 @@
package com.navinfo.outdoor.activity;
import androidx.core.app.ActivityCompat;
import android.Manifest;
import android.content.Intent;
import android.os.CountDownTimer;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseActivity;
import com.kongzue.dialog.util.DialogSettings;
/**
* 启动页
*/
public class MainActivity extends BaseActivity {
@Override
protected int getLayout() {
return R.layout.activity_main;
}
@Override
protected void initData() {
super.initData();
new CountDownTimer(3000, 1000) {
@Override
public void onTick(long l) {
}
@Override
public void onFinish() {
Intent intent = new Intent(MainActivity.this, LoginActivity.class);
startActivity(intent);
finish();
}
}.start();
//必须全局才可以改变样式
DialogSettings.style = (DialogSettings.STYLE.STYLE_KONGZUE);
DialogSettings.init();//初始化清空 BaseDialog 队列
}
private void initPermission() {
String[] pers = {
Manifest.permission.RECORD_AUDIO,
Manifest.permission.CAMERA,
Manifest.permission.INTERNET,
Manifest.permission.WRITE_EXTERNAL_STORAGE,
Manifest.permission.ACCESS_FINE_LOCATION,
Manifest.permission.READ_PHONE_STATE,
Manifest.permission.ACCESS_COARSE_LOCATION
};
ActivityCompat.requestPermissions(this, pers, 100);
}
@Override
protected void initView() {
super.initView();
initPermission();
}
}

View File

@@ -0,0 +1,163 @@
package com.navinfo.outdoor.activity;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Build;
import android.util.Log;
import android.view.View;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.widget.ImageView;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.api.UserApplication;
import com.navinfo.outdoor.base.BaseActivity;
import com.gyf.immersionbar.ImmersionBar;
import java.util.ArrayList;
/**
* 详情页
*/
public class WebActivity extends BaseActivity implements View.OnClickListener {
private ImageView ivIcon;
private WebView nWebView;
private String content = "<div>\n" +
"<h2>定义和用法</h2>\n" +
"\n" +
"<p>\n" +
"\t<img src=\"https://exp-picture.cdn.bcebos.com/560be432939c2cf72dff4caa452c5b1b1fde12e1.jpg?x-bce-process=image%2Fresize%2Cm_lfit%2Cw_500%2Climit_1%2Fformat%2Cf_jpg%2Fquality%2Cq_80\">\n" +
"</p>\n" +
"\n" +
"<p style=\"color: red; margin-left: 20px\">&lt;style&gt; 标签用于为 HTML 文档定义样式信息。</p>\n" +
"\n" +
"<p style=\"background-color: lightblue; margin-left: 20px\">在 style 中,您可以规定在浏览器中如何呈现 HTML 文档。</p>\n" +
"\n" +
"<p style=\"font-family: verdana; margin-left: 20px\">type 属性是必需的,定义 style 元素的内容。唯一可能的值是 \"text/css\"。</p>\n" +
"\n" +
"<p style=\"font-size: 20px; margin-left: 20px\">style 元素位于 head 部分中。</p>\n" +
"</div>";
@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);
nWebView.getSettings().setBlockNetworkImage(false);
WebSettings settings = nWebView.getSettings();
settings.setJavaScriptEnabled(true);
if (Build.VERSION.SDK_INT > Build.VERSION_CODES.LOLLIPOP) {
nWebView.getSettings().setMixedContentMode(WebSettings.MIXED_CONTENT_ALWAYS_ALLOW);
}
nWebView.setWebViewClient(new MyWebViewClient());
settings.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);
settings.setSupportZoom(false);//用于设置webView 放大
settings.setBuiltInZoomControls(false);
nWebView.addJavascriptInterface(new JavascriptInterface(UserApplication.getUserApplication()),"imagelistner");
content = content.replace("<img", "<img style='max-width: 100%'");
nWebView.loadDataWithBaseURL(null, content, "text/html", "utf-8", null);
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;
}
}
// 注入js函数监听
private void addImageClickListener() {
Log.d("TAG", "addImageClickListener: 注入代码");
// 这段js函数的功能就是遍历所有的img几点并添加onclick函数在还是执行的时候调用本地接口传递url过去
nWebView.loadUrl("javascript:(function(){"
+ "var objs = document.getElementsByTagName(\"img\");"
+ "var imgurl=''; "
+ "for(var i=0;i<objs.length;i++) "
+ "{"
+ "imgurl+=objs[i].src+',';"
+ " objs[i].onclick=function() "
+ " { "
+ " imagelistner.openImage(imgurl); "
+ " } " + "}" + "})()");
}
// js通信接口
public class JavascriptInterface {
private Context context;
public JavascriptInterface(Context context) {
this.context = context;
}
@android.webkit.JavascriptInterface //注解 很重要,必不可少
public void openImage(String img) {
System.out.println(img);
Log.d("TAG", "openImage-------------------------: "+img);
String[] imgs = img.split(",");
ArrayList<String> imgsUrl = new ArrayList<String>();
for (String s : imgs) {
imgsUrl.add(s);
Log.d("TAG", "openImage-------------------------: "+s);
}
Intent intent = new Intent();
intent.putStringArrayListExtra("info", imgsUrl);
intent.setClass(context, ImageShowActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
}
}
// 监听
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
return super.shouldOverrideUrlLoading(view, url);
}
@Override
public void onPageFinished(WebView view, String url) {
view.getSettings().setJavaScriptEnabled(true);
super.onPageFinished(view, url);
// html加载完成之后添加监听图片的点击js函数
addImageClickListener();
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
view.getSettings().setJavaScriptEnabled(true);
Log.d("TAG", "addImageClickListener: 开始加载");
super.onPageStarted(view, url, favicon);
}
@Override
public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
super.onReceivedError(view, errorCode, description, failingUrl);
}
}
}

View File

@@ -0,0 +1,86 @@
package com.navinfo.outdoor.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.CapacityMeasureBean;
import java.util.ArrayList;
import java.util.List;
public class CapacityEvaluationAdapter extends RecyclerView.Adapter<CapacityEvaluationAdapter.ViewHolder> {
private List<CapacityMeasureBean.BodyBean.DataBean> capacityList = new ArrayList<>();
private Context context;
public CapacityEvaluationAdapter(Context context) {
this.context = context;
}
public void setCapacityList(List<CapacityMeasureBean.BodyBean.DataBean> capacityList) {
this.capacityList.addAll(capacityList);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View capacity = LayoutInflater.from(context).inflate(R.layout.capacity_item, parent, false);
return new ViewHolder(capacity);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvCapacity.setText(capacityList.get(position).getTitle());
holder.tvResults.setText(capacityList.get(position).getStatus());
Glide.with(context).load(capacityList.get(position).getSrc()).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(holder.ivCapacity);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (onCapacityClick != null) {
onCapacityClick.onClick(position);
}
}
});
}
@Override
public int getItemCount() {
return capacityList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView ivCapacity;
TextView tvCapacity;
TextView tvResults;
public ViewHolder(@NonNull View itemView) {
super(itemView);
ivCapacity = itemView.findViewById(R.id.iv_tas_capacity);
tvCapacity = itemView.findViewById(R.id.tas_capacity_title);
tvResults = itemView.findViewById(R.id.tv_capacity_through);
}
}
public interface OnCapacityClick {
void onClick(int pos);
}
private OnCapacityClick onCapacityClick;
public void setOnCapacityClick(OnCapacityClick onCapacityClick) {
this.onCapacityClick = onCapacityClick;
}
}

View File

@@ -0,0 +1,83 @@
package com.navinfo.outdoor.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.CapacityMeasureBean;
import java.util.ArrayList;
import java.util.List;
public class CapacityItemAdapter extends RecyclerView.Adapter<CapacityItemAdapter.ViewHolder> {
private List<CapacityMeasureBean.BodyBean.DataBean> capItemList = new ArrayList<>();
private Context context;
public CapacityItemAdapter(Context context) {
this.context = context;
}
public void setCapItemList(List<CapacityMeasureBean.BodyBean.DataBean> capItemList) {
this.capItemList.addAll(capItemList);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View capItem = LayoutInflater.from(context).inflate(R.layout.capacity_item, parent, false);
return new ViewHolder(capItem);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
holder.tvCapItem.setText(capItemList.get(position).getTitle());
holder.tvReaus.setText(capItemList.get(position).getStatus());
Glide.with(context).load(capItemList.get(position).getSrc()).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(holder.ivCapItem);
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (setOnClick!=null){
setOnClick.onClick(position);
}
}
});
}
@Override
public int getItemCount() {
return capItemList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView ivCapItem;
TextView tvCapItem;
TextView tvReaus;
public ViewHolder(@NonNull View itemView) {
super(itemView);
ivCapItem = itemView.findViewById(R.id.iv_tas_capacity);
tvCapItem = itemView.findViewById(R.id.tas_capacity_title);
tvReaus = itemView.findViewById(R.id.tv_capacity_through);
}
}
public interface setOnClick{
void onClick(int position);
}
private setOnClick setOnClick;
public void setSetOnClick(setOnClick setOnClick) {
this.setOnClick = setOnClick;
}
}

View File

@@ -0,0 +1,200 @@
package com.navinfo.outdoor.adapter;
import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.CheckBox;
import android.widget.CompoundButton;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RadioButton;
import android.widget.RadioGroup;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.BolBean;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
public class CapacityMeasureAdapter extends RecyclerView.Adapter<CapacityMeasureAdapter.ViewHolder> {
private List<BolBean> measureList = new ArrayList<>();
private Context context;
private Map<String, String> checkedMap;
public Map<String, String> getCheckedMap() {
return checkedMap;
}
public CapacityMeasureAdapter(Context context) {
this.context = context;
this.checkedMap = new LinkedHashMap<>();
}
public void setMeasureList(List<BolBean> measureList) {
this.measureList.addAll(measureList);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View inflate = LayoutInflater.from(context).inflate(R.layout.measure_item, parent, false);
return new ViewHolder(inflate);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
final boolean single = measureList.get(position).isSingle();//是否多选
holder.tvMeasure.setText((position + 1) + measureList.get(position).getQuestion());
if (single) {
RadioGroup radioGroup = new RadioGroup(context);
radioGroup.setOrientation(LinearLayout.VERTICAL);
holder.llOption.addView(radioGroup);
List<?> optionList = measureList.get(position).getOption();
if (optionList != null && !optionList.isEmpty()) {
for (int i = 0; i < optionList.size(); i++) {
obtainOptionLayout(radioGroup, i, (String) optionList.get(i), true,measureList.get(position).getId());
}
}
} else {
List<?> optionList = measureList.get(position).getOption();
if (optionList != null && !optionList.isEmpty()) {
for (int i = 0; i < optionList.size(); i++) {
obtainOptionLayout(holder.llOption, i, (String) optionList.get(i), false, measureList.get(position).getId());
}
}
}
}
private void obtainOptionLayout(ViewGroup parentLayout, int optionIndex, String option, boolean isSingle, String questionId) {
LinearLayout optionLayer = (LinearLayout) LayoutInflater.from(context).inflate(R.layout.capacity_measure_option, null);
parentLayout.addView(optionLayer);
RadioButton tvOptionIndex = optionLayer.findViewById(R.id.tv_option_layer_index);
CheckBox cbOptionIndex = optionLayer.findViewById(R.id.cb_option_layer_index);
if (isSingle) {//单选
tvOptionIndex.setVisibility(View.VISIBLE);
cbOptionIndex.setVisibility(View.GONE);
tvOptionIndex.setText(getOptionIndex(optionIndex));
} else {
tvOptionIndex.setVisibility(View.GONE);
cbOptionIndex.setVisibility(View.VISIBLE);
cbOptionIndex.setText(getOptionIndex(optionIndex));
}
tvOptionIndex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if (isChecked) {
checkedChangeRadioButton(parentLayout, buttonView);
updateCheckedMap(questionId, buttonView, parentLayout);
}
}
});
cbOptionIndex.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
updateCheckedMap(questionId, buttonView, parentLayout);
}
});
ImageView ivOption = optionLayer.findViewById(R.id.iv_option_img);
TextView tvOptionContent = optionLayer.findViewById(R.id.tv_option_content);
if (option != null) {
if (option.startsWith("http")) {
Glide.with(context).load(option).into(ivOption);
} else {
tvOptionContent.setText(option);
}
}
}
private void checkedChangeRadioButton(ViewGroup group, CompoundButton currentButton) {
if (group != null && group.getChildCount() > 0) {
for (int i = 0; i < group.getChildCount(); i++) {
if (group.getChildAt(i) instanceof ViewGroup) {
checkedChangeRadioButton((ViewGroup) group.getChildAt(i), currentButton);
} else if (group.getChildAt(i) instanceof CompoundButton && group.getChildAt(i).isShown() && group.getChildAt(i) != currentButton) {
((CompoundButton) group.getChildAt(i)).setChecked(false);
}
}
}
}
//indext内容
private String getOptionIndex(int index) {
char A = (char) (65 + index);
return "选项" + A + ":";
}
@Override
public int getItemCount() {
return measureList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
TextView tvMeasure;
LinearLayout llOption;
public ViewHolder(@NonNull View itemView) {
super(itemView);
llOption = itemView.findViewById(R.id.ll_option);
tvMeasure = itemView.findViewById(R.id.tv_measure_text1);
}
}
/**
* 获取被勾选的数据
*/
private void updateCheckedMap(String questionId, CompoundButton currentButton, ViewGroup group) {
StringBuilder resultStr = null;
if (group != null) {
resultStr = new StringBuilder("");
List<CompoundButton> resultList = new ArrayList<>();
getCompoundButton(group, resultList);
if (resultList != null && !resultList.isEmpty()) {
for (int i = 0; i < resultList.size(); i++) {
if (((CompoundButton) resultList.get(i)).isChecked()) {
resultStr.append(i).append(",");
}
}
}
}
if (resultStr != null) {
String result = "";
if (resultStr.toString().length() > 0) {
result = resultStr.substring(0, resultStr.length() - 1);
}
checkedMap.put(questionId, result);
Log.d("checked", result);
}
}
/**
* 获取该viewGroup的所有子CompoundButton
*/
private void getCompoundButton(ViewGroup group, List<CompoundButton> compoundButtonList) {
if (group != null) {
for (int i = 0; i < group.getChildCount(); i++) {
if (group.getChildAt(i) instanceof ViewGroup) {
getCompoundButton((ViewGroup) group.getChildAt(i), compoundButtonList);
} else if (group.getChildAt(i) instanceof CompoundButton && group.getChildAt(i).isShown()) {
compoundButtonList.add((CompoundButton) group.getChildAt(i));
}
}
}
}
}

View File

@@ -0,0 +1,79 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.EventPrefectureBean;
import java.util.ArrayList;
import java.util.List;
public class EventPrefectureAdapter extends RecyclerView.Adapter<EventPrefectureAdapter.ViewHolder> {
private List<EventPrefectureBean.BodyBean.DataBean> dataBeans=new ArrayList<>();
private Context context;
public EventPrefectureAdapter(Context context) {
this.context = context;
}
public void setDataBeans(List<EventPrefectureBean.BodyBean.DataBean> 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);
}
}

View File

@@ -0,0 +1,69 @@
package com.navinfo.outdoor.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import androidx.viewpager.widget.PagerAdapter;
import androidx.viewpager.widget.ViewPager;
import com.bumptech.glide.Glide;
import com.navinfo.outdoor.R;
import java.util.ArrayList;
/**
* 图片浏览的PagerAdapter
*/
public class ImagePagerAdapter extends PagerAdapter {
Context context;
ArrayList<String> imgsUrl;
LayoutInflater inflater = null;
ImageView full_image;
public ImagePagerAdapter(Context context, ArrayList<String> imgsUrl) {
this.context = context;
this.imgsUrl = imgsUrl;
inflater = LayoutInflater.from(context);
}
/** 动态加载数据 */
@Override
public void setPrimaryItem(ViewGroup container, int position, Object object) {
super.setPrimaryItem(container, position, object);
}
@Override
public int getCount() {
return imgsUrl == null ? 0 : imgsUrl.size();
}
@Override
public boolean isViewFromObject(View arg0, Object arg1) {
return arg0 == arg1;
}
@Override
public int getItemPosition(Object object) {
// TODO Auto-generated method stub
return super.getItemPosition(object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
View view = inflater.from(context).inflate(R.layout.details_imageshow_item, null);
full_image = (ImageView)view.findViewById(R.id.full_image);
Glide.with(context).load(imgsUrl.get(position)).into(full_image);
((ViewPager) container).addView(view);
return view;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((View) object);
}
}

View File

@@ -0,0 +1,84 @@
package com.navinfo.outdoor.adapter;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import androidx.annotation.NonNull;
import androidx.recyclerview.widget.RecyclerView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CircleCrop;
import com.bumptech.glide.request.RequestOptions;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import java.util.ArrayList;
import java.util.List;
public class TaskExplainAdapter extends RecyclerView.Adapter<TaskExplainAdapter.ViewHolder> {
private List<TaskExplainInfo.BodyBean.DataBean> explainList = new ArrayList<>();
private Context context;
public TaskExplainAdapter(Context context) {
this.context = context;
}
public void setExplainList(List<TaskExplainInfo.BodyBean.DataBean> explainList) {
this.explainList.addAll(explainList);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View inflate = LayoutInflater.from(context).inflate(R.layout.tas_explain_item, parent, false);
return new ViewHolder(inflate);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Glide.with(context).load(explainList.get(position).getSrc()).apply(RequestOptions.bitmapTransform(new CircleCrop())).into(holder.ivExplain);
holder.tvExplain.setText(explainList.get(position).getTitle());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClick != null) {
mOnItemClick.onClick(position);
}
}
});
}
@Override
public int getItemCount() {
return explainList.size();
}
class ViewHolder extends RecyclerView.ViewHolder {
ImageView ivExplain;
TextView tvExplain;
public ViewHolder(@NonNull View itemView) {
super(itemView);
ivExplain = itemView.findViewById(R.id.iv_tas_explain);
tvExplain = itemView.findViewById(R.id.tas_explain_title);
}
}
public interface OnItemClick {
void onClick(int pos);
}
private OnItemClick mOnItemClick;
public void setOnItemClick(OnItemClick pOnItemClick) {
mOnItemClick = pOnItemClick;
}
}

View File

@@ -0,0 +1,74 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import java.util.ArrayList;
import java.util.List;
public class TaskExplainAdapter2 extends RecyclerView.Adapter<TaskExplainAdapter2.ViewHolder2> {
private List<TaskExplainInfo.BodyBean.DataBean> explainList2 = new ArrayList<>();
private Context context;
public TaskExplainAdapter2(Context context) {
this.context = context;
}
public void setExplainList2(List<TaskExplainInfo.BodyBean.DataBean> explainList2) {
this.explainList2.addAll(explainList2);
notifyDataSetChanged();
}
@NonNull
@Override
public ViewHolder2 onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
final View view = LayoutInflater.from(context).inflate(R.layout.task_explain2, parent, false);
return new ViewHolder2(view);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder2 holder, int position) {
holder.tvText.setText(explainList2.get(position).getTitle());
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (mOnItemClick2!=null){
mOnItemClick2.onClick2(position);
}
}
});
}
@Override
public int getItemCount() {
return explainList2.size();
}
class ViewHolder2 extends RecyclerView.ViewHolder {
TextView tvText;
public ViewHolder2(@NonNull View itemView) {
super(itemView);
tvText = itemView.findViewById(R.id.tv_task_explain2);
}
}
public interface OnItemClick2 {
void onClick2(int pos);
}
private TaskExplainAdapter2.OnItemClick2 mOnItemClick2;
public void setOnItemClick(TaskExplainAdapter2.OnItemClick2 pOnItemClick2) {
mOnItemClick2 = pOnItemClick2;
}
}

View File

@@ -0,0 +1,79 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.bean.TaskExplainBean;
import java.util.ArrayList;
import java.util.List;
public class TaskPrefectureAdapter extends RecyclerView.Adapter<TaskPrefectureAdapter.ViewHolder> {
private List<TaskExplainBean.BodyBean.DataBean> dataBeans=new ArrayList<>();
private Context context;
public TaskPrefectureAdapter(Context context) {
this.context = context;
}
public void setDataBeans(List<TaskExplainBean.BodyBean.DataBean> 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);
}
}

View File

@@ -0,0 +1,4 @@
package com.navinfo.outdoor.api;
public interface ApiService {
}

View File

@@ -0,0 +1,71 @@
package com.navinfo.outdoor.api;
import android.app.Application;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.cache.CacheEntity;
import com.lzy.okgo.cache.CacheMode;
import com.lzy.okgo.cookie.CookieJarImpl;
import com.lzy.okgo.cookie.store.DBCookieStore;
import com.lzy.okgo.interceptor.HttpLoggingInterceptor;
import com.lzy.okgo.model.HttpHeaders;
import java.util.concurrent.TimeUnit;
import java.util.logging.Level;
import okhttp3.OkHttpClient;
public class UserApplication extends Application {
public static UserApplication userApplication;
@Override
public void onCreate() {
super.onCreate();
userApplication=this;
initOkGo();
}
public static UserApplication getUserApplication() {
return userApplication;
}
private void initOkGo() {
OkHttpClient.Builder builder = new OkHttpClient.Builder();
//log相关
HttpLoggingInterceptor loggingInterceptor = new HttpLoggingInterceptor("OkGo");
//log打印级别决定了log显示的详细程度
loggingInterceptor.setPrintLevel(HttpLoggingInterceptor.Level.BODY);
//log颜色级别决定了log在控制台显示的颜色
loggingInterceptor.setColorLevel(Level.INFO);
//设置请求头,token值
HttpHeaders headers = new HttpHeaders();
//headers.put("X-Access-Token", SPUtils.get(SpKey.TOKEN, "")+"");
// LogUtils.v("X-Access-Token:" + SPUtils.get(SpKey.TOKEN, ""));
builder.addInterceptor(loggingInterceptor);
//自动管理cookie或者叫session的保持以下几种任选其一就行
//使用sp保持cookie如果cookie不过期则一直有效
//builder.cookieJar(new CookieJarImpl(new SPCookieStore(this)));
//使用数据库保持cookie如果cookie不过期则一直有效
builder.cookieJar(new CookieJarImpl(new DBCookieStore(this)));
//使用内存保持cookieapp退出后cookie消失
//builder.cookieJar(new CookieJarImpl(new MemoryCookieStore()));
//超时时间设置默认60秒
//全局的读取超时时间
builder.readTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
//全局的写入超时时间
builder.writeTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
//全局的连接超时时间
builder.connectTimeout(OkGo.DEFAULT_MILLISECONDS, TimeUnit.MILLISECONDS);
OkGo.getInstance().init(this)
.setOkHttpClient(builder.build())
//全局统一缓存模式,默认不使用缓存,可以不传
.setCacheMode(CacheMode.NO_CACHE)
//全局统一缓存时间,默认永不过期,可以不传
.setCacheTime(CacheEntity.CACHE_NEVER_EXPIRE)
//设置公共请求头
.addCommonHeaders(headers)
//全局统一超时重连次数默认为三次那么最差的情况会请求4次(一次原始请求,三次重连请求)不需要可以设置为0;
.setRetryCount(0);
}
}

View File

@@ -0,0 +1,120 @@
package com.navinfo.outdoor.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;
import androidx.annotation.Nullable;
import androidx.appcompat.app.AlertDialog;
import androidx.appcompat.app.AppCompatActivity;
import com.navinfo.outdoor.api.UserApplication;
import com.gyf.immersionbar.ImmersionBar;
public abstract class BaseActivity extends AppCompatActivity {
private AlertDialog alertDialog;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setScreenRoate(true);
//初始化,默认透明状态栏和黑色导航栏
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() {
alertDialog = new AlertDialog.Builder(this).create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable());
alertDialog.setCancelable(false);
alertDialog.setOnKeyListener((dialog, keyCode, event) -> {
if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_BACK)
return true;
return false;
});
//loading样式
//View view = LayoutInflater.from(this).inflate(R.layout.loading_alert, null);
//alertDialog.setView(view);
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.show();
}
public void setLoadingDialogText(String s) {
//给loading 添加文字
/* TextView view = alertDialog.findViewById(R.id.progressBar_tx);
view.setText(s);*/
}
public void dismissLoadingDialog() {
if (null != alertDialog && alertDialog.isShowing()) {
alertDialog.dismiss();
}
}
protected void initListener() {
}
protected abstract int getLayout();
protected void initView() {
}
protected void initData() {
}
@Override
protected void onDestroy() {
super.onDestroy();
Collector.removeActivity(this);
}
/**
* 设置屏幕横竖屏切换
* @param screenRoate true 竖屏 false 横屏
*/
private void setScreenRoate(Boolean screenRoate) {
if (screenRoate) {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);//设置竖屏模式
} else {
setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_LANDSCAPE);
}
}
}

View File

@@ -0,0 +1,6 @@
package com.navinfo.outdoor.base;
public interface BaseCallBack<T> {
void onSuccess(T t);
void onFail(String error);
}

View File

@@ -0,0 +1,82 @@
package com.navinfo.outdoor.base;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
import android.view.KeyEvent;
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;
import androidx.fragment.app.Fragment;
public abstract class BaseFragment extends Fragment {
private AlertDialog alertDialog;
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View mView= LayoutInflater.from(getActivity()).inflate(getLayout(), container, false);
return mView;
}
@Override
public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initMvp();
initData();
initView();
}
protected <T extends View> T findViewById(@IdRes int id){
return getView().findViewById(id);
}
protected abstract int getLayout();
public void showLoadingDialog() {
alertDialog = new AlertDialog.Builder(getActivity()).create();
alertDialog.getWindow().setBackgroundDrawable(new ColorDrawable());
alertDialog.setCancelable(false);
alertDialog.setOnKeyListener((dialog, keyCode, event) -> {
if (keyCode == KeyEvent.KEYCODE_SEARCH || keyCode == KeyEvent.KEYCODE_BACK)
return true;
return false;
});
//loading样式
//View view = LayoutInflater.from(this).inflate(R.layout.loading, null);
//alertDialog.setView(view);
alertDialog.setCanceledOnTouchOutside(false);
alertDialog.show();
}
public void setLoadingDialogText(String s) {
//给loading 添加文字
/* TextView view = alertDialog.findViewById(R.id.progressBar_tx);
view.setText(s);*/
}
public void dismissLoadingDialog() {
if (null != alertDialog && alertDialog.isShowing()) {
alertDialog.dismiss();
}
}
protected void initMvp() { }
protected void initData() { }
protected void initView() { }
@Override
public void onDestroyView() {
super.onDestroyView();
}
}

View File

@@ -0,0 +1,18 @@
package com.navinfo.outdoor.base;
public abstract class BaseMVPActivity <P extends BasePresenter,V extends BaseView> extends BaseActivity{
protected P presenter;
@Override
protected void initMVP() {
super.initMVP();
presenter= initMVPPresenter();
if (presenter!=null){
presenter.setView(initMVPView());
} }
protected abstract V initMVPView();
protected abstract P initMVPPresenter();
}

View File

@@ -0,0 +1,19 @@
package com.navinfo.outdoor.base;
public abstract class BaseMVPFragment<P extends BasePresenter,V extends BaseView> extends BaseFragment{
protected P presenter;
@Override
protected void initMvp() {
super.initMvp();
presenter= initMVPPresenter();
if (presenter!=null){
presenter.setView(initMVPView());
}
}
protected abstract V initMVPView();
protected abstract P initMVPPresenter();
}

View File

@@ -0,0 +1,12 @@
package com.navinfo.outdoor.base;
import io.reactivex.disposables.CompositeDisposable;
public abstract class BaseModel {
private CompositeDisposable compositeDisposable;
public void onDestroy(){
if (compositeDisposable!=null){
compositeDisposable.clear();
}
}
}

View File

@@ -0,0 +1,61 @@
package com.navinfo.outdoor.base;
import android.net.ParseException;
import android.util.Log;
import android.widget.Toast;
import com.navinfo.outdoor.api.UserApplication;
import com.google.gson.JsonParseException;
import org.json.JSONException;
import java.io.InterruptedIOException;
import java.net.ConnectException;
import java.net.UnknownHostException;
import io.reactivex.subscribers.ResourceSubscriber;
import retrofit2.HttpException;
public abstract class BaseObserver<T> extends ResourceSubscriber <T> {
@Override
public void onNext(T t) {
onSuccess(t);
}
public abstract void onSuccess(T t);
@Override
public void onError(Throwable e) {
Log.e("TAG", "error:" + e.getMessage());
//对异常进行分类,不同的异常提示用户不同的信息
if (e instanceof HttpException) {
// HTTP错误
onFail("HTTP错误");
} else if (e instanceof ConnectException
|| e instanceof UnknownHostException) {
// 连接错误
onFail("连接错误");
} else if (e instanceof InterruptedIOException) {
// 连接超时
onFail("连接超时");
} else if (e instanceof JsonParseException
|| e instanceof JSONException
|| e instanceof ParseException) {
// 解析错误
onFail("解析错误");
} else {
if (e != null) {
onFail(e.toString());
} else {
onFail("未知错误");
}
}
}
protected void onFail(String error){
Toast.makeText(UserApplication.getUserApplication(), error, Toast.LENGTH_SHORT).show();
}
@Override
public void onComplete() {
}
}

View File

@@ -0,0 +1,28 @@
package com.navinfo.outdoor.base;
import java.util.ArrayList;
public abstract class BasePresenter<V extends BaseView> {
protected V view;
private ArrayList<BaseModel> list=new ArrayList<>();
public void setView(V view) {
this.view = view;
}
public BasePresenter() {
initModel();
}
public void onDestroy(){
view=null;
if (list.size()>0){
for (BaseModel baseModel : list) {
baseModel.onDestroy();
}
list.clear();
}
}
public void addModel(BaseModel baseModel){
list.add(baseModel);
}
protected abstract void initModel();
}

View File

@@ -0,0 +1,6 @@
package com.navinfo.outdoor.base;
public interface BaseView<T> {
void onSuccess(T t);
void onFail(String error);
}

View File

@@ -0,0 +1,26 @@
package com.navinfo.outdoor.base;
import android.app.Activity;
import java.util.ArrayList;
import java.util.List;
public class Collector {
public static List<Activity> activityList=new ArrayList<>();
public static void addActivity(Activity activity){
activityList.add(activity);
}
public static void removeActivity(Activity activity) {
activityList.remove(activity);
}
public static void finishAll() {
for (Activity activity : activityList) {
if (!activity.isFinishing()) {
activity.finish();
}
}
}
}

View File

@@ -0,0 +1,49 @@
package com.navinfo.outdoor.bean;
import java.util.List;
public class BolBean {
private String id;
private String question;
private List<?> option;
private boolean isSingle;//是否多选
public BolBean(String id, String question, List<?> option, boolean isM) {
this.id = id;
this.question = question;
this.option = option;
this.isSingle = isM;
}
public boolean isSingle() {
return isSingle;
}
public void setM(boolean m) {
isSingle = m;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public List<?> getOption() {
return option;
}
public void setOption(List<?> option) {
this.option = option;
}
}

View File

@@ -0,0 +1,152 @@
package com.navinfo.outdoor.bean;
import java.util.List;
public class CapacityMeasureBean {
/**
* status : 0
* msg : 成功
* body : {"rownum":0,"data":[{"Subtitle":"(vZcEVf","createtime":"N)VOM","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11","status":"通过"}],"numFound":100,"rows":10}
*/
private int status;
private String msg;
private BodyBean body;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = 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 static class BodyBean {
/**
* rownum : 0
* data : [{"Subtitle":"(vZcEVf","createtime":"N)VOM","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11","status":"通过"}]
* numFound : 100
* rows : 10
*/
private int rownum;
private int numFound;
private int rows;
private List<DataBean> 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<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* Subtitle : (vZcEVf
* createtime : N)VOM
* src : http://10.130.23.166:8080/cbt/img/blue.png
* id : 11
* title : 标题11
* status : 通过
*/
private String Subtitle;
private String createtime;
private String src;
private int id;
private String title;
private String status;
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;
}
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
}
}
}

View File

@@ -0,0 +1,144 @@
package com.navinfo.outdoor.bean;
import java.util.List;
/**
* 活动专区
*/
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}
* 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":"说明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
*/
private int rownum;
private int numFound;
private int rows;
private List<BodyBean.DataBean> 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<BodyBean.DataBean> getData() {
return data;
}
public void setData(List<BodyBean.DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* Subtitle : 说明0
* createtime : 2021-05-26 15:33:51
* src :
* id : 0
* title : 标题0
*/
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;
}
}
}
}

View File

@@ -0,0 +1,27 @@
package com.navinfo.outdoor.bean;
public class ExamBean {
private String id;
private String answer;
public ExamBean(String id, String answer) {
this.id = id;
this.answer = answer;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAnswer() {
return answer;
}
public void setAnswer(String answer) {
this.answer = answer;
}
}

View File

@@ -0,0 +1,62 @@
package com.navinfo.outdoor.bean;
public class ExamSubmitBean {
/**
* status :
* msg :
* body : {"grade":"0为不通过 1为通过 只有0和1"}
*/
private String status;
private String msg;
private BodyBean body;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = 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 static class BodyBean {
/**
* grade : 0为不通过 1为通过 只有0和1
*/
private String grade;
public String getGrade() {
return grade;
}
public void setGrade(String grade) {
this.grade = grade;
}
}
@Override
public String toString() {
return "ExamSubmitBean{" +
"status='" + status + '\'' +
", msg='" + msg + '\'' +
", body=" + body +
'}';
}
}

View File

@@ -0,0 +1,38 @@
package com.navinfo.outdoor.bean;
public class ListBean {
/**
* id : 1
* username : kenny
* sex : 6
*/
private int id;
private String username;
private int sex;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public int getSex() {
return sex;
}
public void setSex(int sex) {
this.sex = sex;
}
}

View File

@@ -0,0 +1,184 @@
package com.navinfo.outdoor.bean;
import java.util.List;
public class MeasureBean {
/**
* status : 0
* msg : 成功
* body : {"title":"0","singleChoice":[{"id":-7433716441913744,"question":"ucEnJR","option":[]}],"multiChoice":[{"id":165541861534708,"question":"ByClM","option":[]}]}
*/
private int status;
private String msg;
private BodyBean body;
public int getStatus() {
return status;
}
public void setStatus(int status) {
this.status = 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 static class BodyBean {
/**
* title : 0
* singleChoice : [{"id":-7433716441913744,"question":"ucEnJR","option":[]},{"id":-7433716441913744,"question":"ucEnJR","option":[]}]
* multiChoice : [{"id":165541861534708,"question":"ByClM","option":[]}]
*/
private String title;
private List<SingleChoiceBean> singleChoice;
private List<MultiChoiceBean> multiChoice;
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public List<SingleChoiceBean> getSingleChoice() {
return singleChoice;
}
public void setSingleChoice(List<SingleChoiceBean> singleChoice) {
this.singleChoice = singleChoice;
}
public List<MultiChoiceBean> getMultiChoice() {
return multiChoice;
}
public void setMultiChoice(List<MultiChoiceBean> multiChoice) {
this.multiChoice = multiChoice;
}
public static class SingleChoiceBean {
/**
* id : -7433716441913744
* question : ucEnJR
* option : []
*/
private String id;
private String question;
private List<?> option;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public List<?> getOption() {
return option;
}
public void setOption(List<?> option) {
this.option = option;
}
@Override
public String toString() {
return "SingleChoiceBean{" +
"id=" + id +
", question='" + question + '\'' +
", option=" + option +
'}';
}
}
public static class MultiChoiceBean {
/**
* id : 165541861534708
* question : ByClM
* option : []
*/
private String id;
private String question;
private List<?> option;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getQuestion() {
return question;
}
public void setQuestion(String question) {
this.question = question;
}
public List<?> getOption() {
return option;
}
public void setOption(List<?> option) {
this.option = option;
}
@Override
public String toString() {
return "MultiChoiceBean{" +
"id=" + id +
", question='" + question + '\'' +
", option=" + option +
'}';
}
}
@Override
public String toString() {
return "BodyBean{" +
"title='" + title + '\'' +
", singleChoice=" + singleChoice +
", multiChoice=" + multiChoice +
'}';
}
}
@Override
public String toString() {
return "MeasureBean{" +
"status=" + status +
", msg='" + msg + '\'' +
", body=" + body +
'}';
}
}

View File

@@ -0,0 +1,144 @@
package com.navinfo.outdoor.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<DataBean> 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<DataBean> getData() {
return data;
}
public void setData(List<DataBean> 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;
}
}
}
}

View File

@@ -0,0 +1,143 @@
package com.navinfo.outdoor.bean;
import java.util.List;
public class TaskExplainInfo {
/**
* msg : 成功
* body : {"rownum":0,"data":[{"Subtitle":"副标题","createtime":"2021-5-11","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"2021-5-11","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"2021-5-11","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":"2021-5-11","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":11,"title":"标题11"},{"Subtitle":"","createtime":"2021-5-11","src":"http://10.130.23.166:8080/cbt/img/blue.png","id":12,"title":"标题12"},{"Subtitle":"","createtime":"2021-5-11","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<DataBean> 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<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* Subtitle : 副标题
* createtime : 2021-5-11
* 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;
}
}
}
}

View File

@@ -0,0 +1,144 @@
package com.navinfo.outdoor.bean;
import java.util.List;
/**
* 任务专区bean
*/
public class TaskSpecificationBean {
/**
* 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}
* 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":"说明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
*/
private int rownum;
private int numFound;
private int rows;
private List<DataBean> 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<DataBean> getData() {
return data;
}
public void setData(List<DataBean> data) {
this.data = data;
}
public static class DataBean {
/**
* Subtitle : 说明0
* createtime : 2021-05-26 15:33:51
* src :
* id : 0
* title : 标题0
*/
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;
}
}
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 关于页面的fragment
*/
public class AboutFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.about_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,123 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.FragmentManagement;
import com.navinfo.outdoor.adapter.CapacityEvaluationAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.CapacityMeasureBean;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.http.OkGoBuilder;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* 发现-能力测评
*/
public class CapacityEvaluationFragment extends BaseFragment implements View.OnClickListener {
private ImageView ivEvaluationTaskFinish;
private XRecyclerView capacityEvaluationRecycler;
private CapacityEvaluationAdapter capacityEvaluationAdapter;
private ArrayList<TaskExplainInfo.BodyBean.DataBean> capacityList;
@Override
protected int getLayout() {
return R.layout.fragment_capacity_evaluation;
}
@Override
protected void initView() {
super.initView();
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));
capacityEvaluationRecycler.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
capacityEvaluationRecycler.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
//取消上拉加载,刷新功能
capacityEvaluationRecycler.setPullRefreshEnabled(false);
capacityEvaluationRecycler.setLoadingMoreEnabled(false);
capacityEvaluationAdapter = new CapacityEvaluationAdapter(getActivity());
capacityEvaluationRecycler.setAdapter(capacityEvaluationAdapter);
capacityEvaluationRecycler.getDefaultFootView().setNoMoreHint("加载成功");
capacityEvaluationRecycler.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
}
});
capacityEvaluationAdapter.setOnCapacityClick(new CapacityEvaluationAdapter.OnCapacityClick() {
@Override
public void onClick(int id) {
Intent capacityEvaWeb = new Intent(getActivity(), FragmentManagement.class);
capacityEvaWeb.putExtra("tag",14);
startActivity(capacityEvaWeb);
}
});
}
@Override
protected void initData() {
super.initData();
capacityList = new ArrayList<>();
initNewWork(true);
}
private void initNewWork(boolean b) {
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.MSG_LISt)
.method(OkGoBuilder.GET)
.cls(CapacityMeasureBean.class)
.json(new JSONObject())
.callback(new Callback<CapacityMeasureBean>() {
@Override
public void onSuccess(CapacityMeasureBean response, int id) {
dismissLoadingDialog();
capacityEvaluationAdapter.setCapacityList(response.getBody().getData());
Log.d("TAG", "onSuccess: " + response.getMsg() + "sssssssssssss");
}
@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();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_evaluation_task_finish:
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,114 @@
package com.navinfo.outdoor.fragment;
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.navinfo.outdoor.R;
import com.navinfo.outdoor.adapter.CapacityItemAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.CapacityMeasureBean;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.http.OkGoBuilder;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* 能力测评的第二个页面
*/
public class CapacityEvaluationFragment2 extends BaseFragment implements View.OnClickListener {
private ImageView ivCapItemFinish;
private XRecyclerView capacityRlv;
private CapacityItemAdapter capacityItemAdapter;
private ArrayList<TaskExplainInfo.BodyBean.DataBean> capItemList;
@Override
protected int getLayout() {
return R.layout.fragment_capacity_evaluation2;
}
@Override
protected void initView() {
super.initView();
ivCapItemFinish = findViewById(R.id.iv_task_capacity2_finish);
capacityRlv = findViewById(R.id.task_capacity2_recycler);
ivCapItemFinish.setOnClickListener(this::onClick);
capacityRlv.setLayoutManager(new LinearLayoutManager(getActivity()));
capacityRlv.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
capacityRlv.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
capacityRlv.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
capacityRlv.setPullRefreshEnabled(false);
capacityRlv.setLoadingMoreEnabled(false);
capacityItemAdapter = new CapacityItemAdapter(getActivity());
capacityRlv.setAdapter(capacityItemAdapter);
capacityRlv.getDefaultFootView().setNoMoreHint("已经加载成功");
capacityRlv.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
}
});
capacityItemAdapter.setSetOnClick(new CapacityItemAdapter.setOnClick() {
@Override
public void onClick(int position) {
}
});
}
@Override
protected void initData() {
super.initData();
capItemList = new ArrayList<>();
initNetWorks(true);
}
private void initNetWorks(boolean b) {
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.MSG_LISt)
.method(OkGoBuilder.GET)
.cls(CapacityMeasureBean.class)
.json(new JSONObject())
.callback(new Callback<CapacityMeasureBean>() {
@Override
public void onSuccess(CapacityMeasureBean response, int id) {
dismissLoadingDialog();
capacityItemAdapter.setCapItemList(response.getBody().getData());
Log.d("TAG", "onSuccess: " + response.getMsg() + "sssssssssssss");
}
@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();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_task_capacity2_finish:
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,196 @@
package com.navinfo.outdoor.fragment;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import androidx.appcompat.app.AppCompatActivity;
import androidx.recyclerview.widget.LinearLayoutManager;
import androidx.recyclerview.widget.RecyclerView;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.adapter.CapacityMeasureAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.BolBean;
import com.navinfo.outdoor.bean.ExamBean;
import com.navinfo.outdoor.bean.ExamSubmitBean;
import com.navinfo.outdoor.bean.MeasureBean;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.http.OkGoBuilder;
import com.kongzue.dialog.interfaces.OnDialogButtonClickListener;
import com.kongzue.dialog.util.BaseDialog;
import com.kongzue.dialog.v3.MessageDialog;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* 发现-能力测评条目点击进入测试页面
*/
public class CapacityMeasurementFragment extends BaseFragment implements View.OnClickListener {
private ImageView ivMeasurementFinish;
private RecyclerView capacityMeasurementRel;
private CapacityMeasureAdapter capacityMeasureAdapter;
private ArrayList<BolBean> bolbean;
private Button btn;
private ArrayList<ExamBean> examBeans;
@Override
protected int getLayout() {
return R.layout.fragment_capacity_eva_web;
}
@Override
protected void initView() {
super.initView();
ivMeasurementFinish = (ImageView) findViewById(R.id.iv_measurement_finish);
capacityMeasurementRel = (RecyclerView) findViewById(R.id.capacity_measurementRel);
ivMeasurementFinish.setOnClickListener(this::onClick);
capacityMeasurementRel.setLayoutManager(new LinearLayoutManager(getActivity()));
capacityMeasureAdapter = new CapacityMeasureAdapter(getActivity());
capacityMeasurementRel.setAdapter(capacityMeasureAdapter);
btn = findViewById(R.id.btn);
btn.setOnClickListener(this::onClick);
}
@Override
protected void initData() {
super.initData();
bolbean = new ArrayList<>();
examBeans = new ArrayList<>();
initNetWorks(true);
}
private void initNetWorks(boolean b) {
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.EXAM_CONTENT)
.method(OkGoBuilder.GET)
.cls(MeasureBean.class)
.json(new JSONObject())
.callback(new Callback<MeasureBean>() {
@Override
public void onSuccess(MeasureBean response, int id) {
dismissLoadingDialog();
//单选
List<MeasureBean.BodyBean.MultiChoiceBean> multiChoice = response.getBody().getMultiChoice();
//多选
List<MeasureBean.BodyBean.SingleChoiceBean> singleChoice1 = response.getBody().getSingleChoice();
if (multiChoice != null) {
for (int i = 0; i < multiChoice.size(); i++) {
bolbean.add(new BolBean(multiChoice.get(i).getId(), multiChoice.get(i).getQuestion(), multiChoice.get(i).getOption(), true));
}
}
if (singleChoice1 != null) {
for (int i = 0; i < singleChoice1.size(); i++) {
bolbean.add(new BolBean(singleChoice1.get(i).getId(), singleChoice1.get(i).getQuestion(), singleChoice1.get(i).getOption(), false));
}
}
if (bolbean != null) {
capacityMeasureAdapter.setMeasureList(bolbean);
}
Log.d("TAG", "onSuccess: " + response.toString() + "sssssssssssss");
}
@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();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_measurement_finish:
getActivity().finish();
break;
case R.id.btn:
try {
if (bolbean!=null){
Map<String , String> checkedMap = capacityMeasureAdapter.getCheckedMap();
for (int i = 0; i < bolbean.size(); i++) {
final String id = bolbean.get(i).getId();
if (!checkedMap.containsKey(id)||checkedMap.get(id)==null||("").equals(checkedMap.get(id))){
Toast.makeText(getContext(), "有题目未填写答案,请仔细检查!", Toast.LENGTH_SHORT).show();
return;
}
}
for(Map.Entry<String , String> entry : checkedMap.entrySet()) {
examBeans.add(new ExamBean(entry.getKey(),entry.getValue()));
}
initExamSubmit();
}
} catch (JSONException e) {
e.printStackTrace();
}
break;
}
}
private void initExamSubmit() throws JSONException {
JSONArray jsonArray = new JSONArray();
for (int i = 0; i < examBeans.size(); i++) {
JSONObject json = new JSONObject();
json.put("id", examBeans.get(i).getId());
json.put("answer", examBeans.get(i).getAnswer());
jsonArray.put(json);
}
examBeans.clear();
Log.d("TAG", "initExamSubmit: " + jsonArray.toString());
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.EXAM_SUBMIT)
.method(OkGoBuilder.POST)
.cls(ExamSubmitBean.class)
.jsonArray(jsonArray)
.callback(new Callback<ExamSubmitBean>() {
@Override
public void onSuccess(ExamSubmitBean response, int id) {
dismissLoadingDialog();
Log.d("TAG", "onSuccess: " + response.toString()+ "sssssssssssss");
if (response.getBody().getGrade().equals("0")){
MessageDialog.show((AppCompatActivity) getActivity(),"提示","不通过","确定","取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
return false;
}
});
}else {
MessageDialog.show((AppCompatActivity) getActivity(),"提示","通过","确定","取消").setOkButton(new OnDialogButtonClickListener() {
@Override
public boolean onClick(BaseDialog baseDialog, View v) {
// Toast.makeText(getContext(), "点击了确定", Toast.LENGTH_SHORT).show();
return false;
}
});
}
//Toast.makeText(getActivity(), response.getMsg() + "", Toast.LENGTH_SHORT).show();
}
@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();
}
}

View File

@@ -0,0 +1,24 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 联系我们的Fragment
*/
public class ContactFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.contact_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,161 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.WebActivity;
import com.navinfo.outdoor.adapter.EventPrefectureAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.EventPrefectureBean;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.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<EventPrefectureBean.BodyBean.DataBean> 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<EventPrefectureBean>() {
@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;
}
}
}

View File

@@ -0,0 +1,74 @@
package com.navinfo.outdoor.fragment;
import android.content.Intent;
import android.view.View;
import android.widget.LinearLayout;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.FragmentManagement;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 发现的Fragment
* 2021-5-25
*/
public class FindFragment extends BaseFragment implements View.OnClickListener{
private LinearLayout linear_task_prefecture;//任务专区
private LinearLayout linear_task_explain;//任务说明
private LinearLayout linearEnd;
private LinearLayout linear_event_prefecture;
@Override
protected int getLayout() {
return R.layout.find_fragment;
}
@Override
protected void initView() {
super.initView();
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 =findViewById(R.id.linear_task_explain);
linear_task_explain.setOnClickListener(this::onClick);
linearEnd = findViewById(R.id.linear_end);
linearEnd.setOnClickListener(this::onClick);
}
@Override
protected void initData() {
super.initData();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.linear_task_prefecture:
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(), 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(), FragmentManagement.class);
endIntent.putExtra("tag", 11);
startActivity(endIntent);
break;
}
}
}

View File

@@ -0,0 +1,64 @@
package com.navinfo.outdoor.fragment;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 忘记密码页面
*/
public class ForgetPawFragment extends BaseFragment implements View.OnClickListener{
private ImageView ivFinish;
private TextView title;
private EditText etForgetPawPhone;
private EditText etForgetPawNote;
private EditText etForgetPawPaw;
private EditText etForgetPawConfirmPaw;
private TextView tvForgetPaw;
private TextView forgetPawGetNote;
@Override
protected int getLayout() {
return R.layout.fragment_forget_paw;
}
@Override
protected void initView() {
super.initView();
ivFinish = findViewById(R.id.iv_finish);
title = findViewById(R.id.title);
etForgetPawPhone = findViewById(R.id.et_forgetPaw_phone);
etForgetPawNote = findViewById(R.id.et_forgetPaw_note);
etForgetPawPaw = findViewById(R.id.et_forgetPaw_paw);
etForgetPawConfirmPaw = findViewById(R.id.et_forgetPaw_confirm_paw);
forgetPawGetNote = findViewById(R.id.forgetPaw_get_note);
tvForgetPaw = findViewById(R.id.tv_forgetPaw);
ivFinish.setOnClickListener(this::onClick);
forgetPawGetNote.setOnClickListener(this::onClick);
title.setText("忘记密码");
}
@Override
protected void initData() {
super.initData();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.iv_finish:
getActivity().finish();
break;
case R.id.forgetPaw_get_note:
Toast.makeText(getActivity(), "忘记密码获取验证码", Toast.LENGTH_SHORT).show();
break;
}
}
}

View File

@@ -0,0 +1,24 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 收款信息
*/
public class GatheringFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.gathering_fragment;
}
@Override
protected void initView() {
super.initView();
}
@Override
protected void initData() {
super.initData();
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 我的等级页面的fragment
*/
public class GradeFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.grade_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 常见问题页面的fragment
*/
public class IssueFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.issue_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,26 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 地图下载的Fragment
*/
public class MapDownloadFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.map_download_fragment;
}
@Override
protected void initView() {
super.initView();
}
@Override
protected void initData() {
super.initData();
}
}

View File

@@ -0,0 +1,138 @@
package com.navinfo.outdoor.fragment;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.FragmentManagement;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 我的Fragment
* 2021-5-25
*/
public class MineFragment extends BaseFragment implements View.OnClickListener{
private ImageView imageHeard ,imageShare, imageSign;
private TextView tvName, tvMoney;
private Button btnWithdraw,btnQuit;
private RelativeLayout rlGrade, rlPrivilege, rlMap, rlIssue, rlContact, rlSet, rlAbout;
@Override
protected int getLayout() {
return R.layout.mine_fragment;
}
@Override
protected void initView() {
super.initView();
imageHeard = findViewById(R.id.image_heard);
imageHeard.setOnClickListener(this::onClick);
tvName = findViewById(R.id.tv_name);
tvName.setOnClickListener(this::onClick);
tvMoney = findViewById(R.id.tv_money);
imageShare = findViewById(R.id.image_share);
imageShare.setOnClickListener(this::onClick);
imageSign = findViewById(R.id.image_sign);
imageSign.setOnClickListener(this::onClick);
btnWithdraw = findViewById(R.id.btn_withdraw);
btnWithdraw.setOnClickListener(this::onClick);
rlGrade = findViewById(R.id.rl_grade);
rlGrade.setOnClickListener(this::onClick);
rlPrivilege = findViewById(R.id.rl_privilege);
rlPrivilege.setOnClickListener(this::onClick);
rlMap = findViewById(R.id.rl_map);
rlMap.setOnClickListener(this::onClick);
rlIssue = findViewById(R.id.rl_issue);
rlIssue.setOnClickListener(this::onClick);
rlContact = findViewById(R.id.rl_contact);
rlContact.setOnClickListener(this::onClick);
rlSet = findViewById(R.id.rl_set);
rlSet.setOnClickListener(this::onClick);
rlAbout = findViewById(R.id.rl_about);
rlAbout.setOnClickListener(this::onClick);
btnQuit = findViewById(R.id.btn_quit);
btnQuit.setOnClickListener(this::onClick);
}
@Override
protected void initData() {
super.initData();
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.image_heard:
case R.id.tv_name:
//跳转到个人信息
Intent intentUser = new Intent(getActivity(), FragmentManagement.class);
intentUser.putExtra("tag",16);
startActivity(intentUser);
break;
case R.id.image_share://分享
break;
case R.id.image_sign://签到
break;
case R.id.btn_withdraw:
//提现页面
Intent intentWithdraw = new Intent(getActivity(), FragmentManagement.class);
intentWithdraw.putExtra("tag",15);
startActivity(intentWithdraw);
break;
case R.id.rl_grade:
//我的等级
Intent intentGrade = new Intent(getActivity(), FragmentManagement.class);
intentGrade.putExtra("tag",17);
startActivity(intentGrade);
break;
case R.id.rl_privilege:
//我的特权
Intent intentPrivilege = new Intent(getActivity(), FragmentManagement.class);
intentPrivilege.putExtra("tag",18);
startActivity(intentPrivilege);
break;
case R.id.rl_map:
//地图下载
Intent intentMap = new Intent(getActivity(), FragmentManagement.class);
intentMap.putExtra("tag",19);
startActivity(intentMap);
break;
case R.id.rl_issue:
//常见问题
Intent intentIssue = new Intent(getActivity(), FragmentManagement.class);
intentIssue.putExtra("tag",20);
startActivity(intentIssue);
break;
case R.id.rl_contact:
//联系我们
Intent intentContact = new Intent(getActivity(), FragmentManagement.class);
intentContact.putExtra("tag",21);
startActivity(intentContact);
break;
case R.id.rl_set:
//设置
Intent intentSet = new Intent(getActivity(), FragmentManagement.class);
intentSet.putExtra("tag",22);
startActivity(intentSet);
break;
case R.id.rl_about:
//关于
Intent intentAbout = new Intent(getActivity(), FragmentManagement.class);
intentAbout.putExtra("tag",23);
startActivity(intentAbout);
break;
case R.id.btn_quit:
//退出登录
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 我的等级页面的fragment
*/
public class PrivilegeFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.privilege_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,32 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 记录的Fragment
* 2021-5-25
*/
public class RecordFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.record_fragment;
}
@Override
protected void initView() {
super.initView();
}
//界面可见时再加载数据
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
super.setUserVisibleHint(isVisibleToUser);
if (isVisibleToUser) {
}
}
@Override
protected void initData() {
super.initData();
}
}

View File

@@ -0,0 +1,62 @@
package com.navinfo.outdoor.fragment;
import android.view.View;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.TextView;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 注册页面
*/
public class RegisterFragment extends BaseFragment {
private EditText etRegisterPhone;
private EditText etRegisterNote;
private TextView registerGetNote;
private EditText etRegisterReferrer;
private EditText etRegisterPaw;
private EditText etRegisterConfirmPaw;
private ImageView ivRegisterCheck;
private TextView haveGoLogin;
private TextView tvRegister;
private ImageView ivFinish;
@Override
protected int getLayout() {
return R.layout.fragment_register;
}
@Override
protected void initView() {
super.initView();
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();
}
});
}
@Override
protected void initData() {
super.initData();
}
}

View File

@@ -0,0 +1,24 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 设置页面的fragment
*/
public class SetFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.set_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,31 @@
package com.navinfo.outdoor.fragment;
import android.view.View;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 发现-任务说明的Item点击进入Web页面
*/
public class TaskExWebFragment extends BaseFragment implements View.OnClickListener {
@Override
protected int getLayout() {
return R.layout.fragment_task_ex_web;
}
@Override
protected void initView() {
super.initView();
}
@Override
protected void initData() {
super.initData();
}
@Override
public void onClick(View v) {
}
}

View File

@@ -0,0 +1,122 @@
package com.navinfo.outdoor.fragment;
import android.content.Intent;
import android.util.Log;
import android.view.View;
import android.widget.ImageView;
import androidx.recyclerview.widget.DividerItemDecoration;
import androidx.recyclerview.widget.LinearLayoutManager;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.FragmentManagement;
import com.navinfo.outdoor.adapter.TaskExplainAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.http.OkGoBuilder;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* 发现-任务说明
*/
public class TaskExplainFragment extends BaseFragment implements View.OnClickListener {
private ImageView ivFindTaskExplain;
private XRecyclerView taskExplainRecycle;
private ArrayList<TaskExplainInfo.BodyBean.DataBean> dataBeans;
private TaskExplainAdapter taskExplainAdapter;
private int page1 = 1;
@Override
protected int getLayout() {
return R.layout.task_explain_fragment;
}
@Override
protected void initView() {
super.initView();
ivFindTaskExplain = findViewById(R.id.iv_find_task_explain);
taskExplainRecycle =findViewById(R.id.task_explain_recycler);
ivFindTaskExplain.setOnClickListener(this::onClick);
taskExplainRecycle.setLayoutManager(new LinearLayoutManager(getActivity()));
//下划线
taskExplainRecycle.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL));
taskExplainRecycle.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
taskExplainRecycle.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
//取消上啦加载下拉刷新
taskExplainRecycle.setPullRefreshEnabled(false);
taskExplainRecycle.setLoadingMoreEnabled(false);
taskExplainAdapter = new TaskExplainAdapter(getActivity());
taskExplainRecycle.setAdapter(taskExplainAdapter);
taskExplainRecycle.getDefaultFootView().setNoMoreHint("加载完毕");
taskExplainRecycle.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
}
});
taskExplainAdapter.setOnItemClick(new TaskExplainAdapter.OnItemClick() {
@Override
public void onClick(int pos) {
Intent itemIntent = new Intent(getActivity(), FragmentManagement.class);
itemIntent.putExtra("tag", 10);
startActivity(itemIntent);
}
});
}
@Override
protected void initData() {
super.initData();
dataBeans = new ArrayList<>();
initNetWork(true);
}
private void initNetWork(boolean b) {
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.listTaskExplain)
.method(OkGoBuilder.GET)
.cls(TaskExplainInfo.class)
.json(new JSONObject())
.callback(new Callback<TaskExplainInfo>() {
@Override
public void onSuccess(TaskExplainInfo response, int id) {
dismissLoadingDialog();
taskExplainAdapter.setExplainList(response.getBody().getData());
Log.d("TAG", "onSuccess: " + response.getMsg() + "");
}
@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();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_find_task_explain:
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,121 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.WebActivity;
import com.navinfo.outdoor.adapter.TaskExplainAdapter2;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.TaskExplainInfo;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.http.OkGoBuilder;
import com.jcodecraeer.xrecyclerview.ProgressStyle;
import com.jcodecraeer.xrecyclerview.XRecyclerView;
import org.json.JSONObject;
import java.util.ArrayList;
/**
* 发现页面的任务说明的点击条目跳转第二个页面
*/
public class TaskExplainFragment2 extends BaseFragment implements View.OnClickListener {
private ImageView ivTaskExplain2;
private XRecyclerView taskExplain2Recycler;
private ArrayList<TaskExplainInfo.BodyBean.DataBean> dataBeans2;
private TaskExplainAdapter2 taskExplainAdapter2;
@Override
protected int getLayout() {
return R.layout.fragment_task_explain2;
}
@Override
protected void initView() {
super.initView();
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));
taskExplain2Recycler.setRefreshProgressStyle(ProgressStyle.BallSpinFadeLoader);
taskExplain2Recycler.setLoadingMoreProgressStyle(ProgressStyle.BallRotate);
//取消上拉加载,刷新功能。
taskExplain2Recycler.setPullRefreshEnabled(false);
taskExplain2Recycler.setLoadingMoreEnabled(false);
taskExplainAdapter2 = new TaskExplainAdapter2(getActivity());
taskExplain2Recycler.setAdapter(taskExplainAdapter2);
taskExplain2Recycler.getDefaultFootView().setNoMoreHint("加载完毕");
taskExplain2Recycler.setLoadingListener(new XRecyclerView.LoadingListener() {
@Override
public void onRefresh() {
}
@Override
public void onLoadMore() {
}
});
taskExplainAdapter2.setOnItemClick(new TaskExplainAdapter2.OnItemClick2() {
@Override
public void onClick2(int pos) {
Intent intent = new Intent(getActivity(), WebActivity.class);
intent.putExtra("int",pos);
startActivity(intent);
}
});
}
@Override
protected void initData() {
super.initData();
dataBeans2 = new ArrayList<>();
initNetWork2(true);
}
private void initNetWork2(boolean b) {
OkGoBuilder.getInstance()
.Builder(getActivity())
.url(HttpInterface.listTaskExplain)
.method(OkGoBuilder.GET)
.cls(TaskExplainInfo.class)
.json(new JSONObject())
.callback(new Callback<TaskExplainInfo>() {
@Override
public void onSuccess(TaskExplainInfo response, int id) {
dismissLoadingDialog();
taskExplainAdapter2.setExplainList2(response.getBody().getData());
Log.d("TAG", "onSuccess: " + response.getMsg() + "sssssssssssss");
}
@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();
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.iv_task_explain2_finish:
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,159 @@
package com.navinfo.outdoor.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.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.WebActivity;
import com.navinfo.outdoor.adapter.TaskPrefectureAdapter;
import com.navinfo.outdoor.base.BaseFragment;
import com.navinfo.outdoor.bean.TaskExplainBean;
import com.navinfo.outdoor.http.Callback;
import com.navinfo.outdoor.http.HttpInterface;
import com.navinfo.outdoor.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 TaskPrefectureFragment extends BaseFragment implements View.OnClickListener{
private ImageView mIvFindTask;
private XRecyclerView taskRecycler;
private List<TaskExplainBean.BodyBean.DataBean> dataBeanList;
private TaskPrefectureAdapter taskPrefectureAdapter;
private int page=1;
@Override
protected int getLayout() {
return R.layout.task_prefecture_fragment;
}
@Override
protected void initView() {
super.initView();
mIvFindTask = findViewById(R.id.iv_find_task);
mIvFindTask.setOnClickListener(this::onClick);
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<TaskExplainBean>() {
@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
public void onClick(View v) {
switch (v.getId()){
case R.id.iv_find_task:
getActivity().finish();
break;
}
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 寻宝的Fragment
* 2021-5-25
*/
public class TreasureFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.treasure_fragment;
}
@Override
protected void initView() {
super.initView();
}
@Override
protected void initData() {
super.initData();
}
}

View File

@@ -0,0 +1,67 @@
package com.navinfo.outdoor.fragment;
import android.content.Intent;
import android.graphics.Bitmap;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import androidx.annotation.Nullable;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.activity.FragmentManagement;
import com.navinfo.outdoor.base.BaseFragment;
import static android.app.Activity.RESULT_OK;
/**
* 用户资料的fragment
*/
public class UserDataFragment extends BaseFragment implements View.OnClickListener{
private Button btnGathering;
private Button btnAttestation;
private ImageView imageView;
@Override
protected int getLayout() {
return R.layout.user_data_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
btnAttestation = findViewById(R.id.btn_attestation);
btnAttestation.setOnClickListener(this::onClick);
btnGathering = findViewById(R.id.btn_gathering);
btnGathering.setOnClickListener(this::onClick);
}
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.btn_gathering:
Intent gatheringIntent = new Intent(getActivity(), FragmentManagement.class);
gatheringIntent.putExtra("tag",24);
startActivity(gatheringIntent);
break;
}
}
@Override
public void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (resultCode==RESULT_OK){
Bundle extras=data.getExtras();//从Intent中获取附加值
Bitmap bitmap=(Bitmap) extras.get("data");//从附加值中获取返回的图像
imageView.setImageBitmap(bitmap);//显示图像
}
}
}

View File

@@ -0,0 +1,25 @@
package com.navinfo.outdoor.fragment;
import com.navinfo.outdoor.R;
import com.navinfo.outdoor.base.BaseFragment;
/**
* 提现页面的fragment
*/
public class WithdrawFragment extends BaseFragment {
@Override
protected int getLayout() {
return R.layout.withdraw_fragment;
}
@Override
protected void initData() {
super.initData();
}
@Override
protected void initView() {
super.initView();
}
}

View File

@@ -0,0 +1,24 @@
package com.navinfo.outdoor.http;
/**
* Created by yzb_android on 2019/12/30.
* 作用:
*/
public interface Callback<T> {
/**
* 数据成功时候回调
*
* @param response 成功回调接口
* @param id 成功码
*/
void onSuccess(T response, int id);
/**
* 数据失败时候回调
*
* @param e 失败回调异常
* @param id 失败码
*/
void onError(Throwable e, int id);
}

View File

@@ -0,0 +1,33 @@
package com.navinfo.outdoor.http;
import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.base.Request;
/**
* Created by yzb_android on 2021 5 25
* 作用网络请求前显示一个dialog,请求结束后取消loading
*/
public abstract class DialogCallback<T> extends JsonCallback<T> {
@Override
public void onSuccess(Response<T> response) {
}
public DialogCallback( Class<T> tClass) {
super(tClass);
}
@Override
public void onStart(Request<T, ? extends Request> request) {
}
@Override
public void onFinish() {
}
}

View File

@@ -0,0 +1,18 @@
package com.navinfo.outdoor.http;
public class HttpInterface {
//http://172.21.91.160:8000/api/user/list
public static final String IP1 = "http://172.21.91.160:8000/api/1/";
public static final String IPm4 = "https://mockapi.eolinker.com/m5LxPbRb58eec57f4943420b1eb3b4e95b93968619a2973/m4/1/";
//发现:测试接口
public static final String listTask = IP1 + "task/list";//任务专区
public static final String listEvent = IP1 + "task/list";//活动专区
public static final String listTaskExplain = IP1 + "task/info";//任务说明
public static final String MSG_LISt = IPm4 + "msg_list";//发现查询接口
public static final String MSG_CONTENT = IPm4 + "msg_content";//发现 -富文本详情页请求
public static final String EXAM_CONTENT = IPm4 + "exam_content";//发现 -能力测评获取试题接口
public static final String EXAM_SUBMIT = IPm4 + "exam_submit";//发现 -能力测评提交试卷 post
}

View File

@@ -0,0 +1,53 @@
package com.navinfo.outdoor.http;
import com.navinfo.outdoor.util.Whetherisempty;
import com.google.gson.Gson;
import com.lzy.okgo.callback.AbsCallback;
import java.lang.reflect.Type;
import okhttp3.Response;
import okhttp3.ResponseBody;
/**
* Created by yzb_android on 2019/12/30.
* 作用将返回过来的json字符串转换为实体类
*/
public abstract class JsonCallback<T> extends AbsCallback<T> {
private Type mType;
private Class<T> clazz;
public JsonCallback() {
}
public JsonCallback(Type type) {
mType = type;
}
public JsonCallback(Class<T> clazz) {
this.clazz = clazz;
}
@Override
public T convertResponse(Response response) throws Throwable {
ResponseBody body = response.body();
if (body == null) {
return null;
}
T data = null;
Gson gson = new Gson();
String str = Whetherisempty.getClfz(response.body().string());
if (mType != null) {
data = gson.fromJson(str, mType);
}
if (clazz != null) {
data = gson.fromJson(str, clazz);
//可以将错误信息在onError中获取到
//https://github.com/jeasonlzy/okhttp-OkGo/wiki/Callback#callback%E4%BB%8B%E7%BB%8D
}
return data;
}
}

View File

@@ -0,0 +1,322 @@
package com.navinfo.outdoor.http;
import android.app.Activity;
import com.lzy.okgo.OkGo;
import com.lzy.okgo.model.HttpParams;
import com.lzy.okgo.model.Response;
import com.lzy.okgo.request.PostRequest;
import org.json.JSONArray;
import org.json.JSONObject;
import java.io.File;
import java.util.ArrayList;
/**
* Created by yzb_android on 2019/12/30.
* 作用OKGO帮助类-建造者模式
*/
public class OkGoBuilder<T> {
/**
* get请求
*/
public static final int GET = 1;
/**
* post请求
*/
public static final int PSOT = 2;
public static final int POST = 5;
/**
* post请求
*/
public static final int PSOTFILE = 3;
public static final int PSOTFILEALONE = 4;
private Activity activity;
/**
* 请求网址
*/
private String url;
private String file;
private String pdf;
/**
* 参数
*/
private HttpParams params;
private String jsonstr;
private JSONObject json;
private JSONArray jsonArray;
/**
* 实体类
*/
private Class<T> clazz;
/**
* 回调
*/
private Callback<T> callback;
private int methodType;
private ArrayList<File> list;
/**
* 单列模式
**/
private static OkGoBuilder mOkGoBuilder = null;
/**
* 构造函数私有化
**/
private OkGoBuilder() {
}
/**
* 公有的静态函数,对外暴露获取单例对象的接口
**/
public static OkGoBuilder getInstance() {
// if (mOkGoBuilder == null) {
// synchronized (OkGoBuilder.class) {
// if (mOkGoBuilder == null) {
mOkGoBuilder = new OkGoBuilder();
// }
// }
// }
return mOkGoBuilder;
}
public OkGoBuilder Builder(Activity activity) {
this.activity = activity;
return this;
}
public OkGoBuilder url(String url) {
this.url = url;
this.url = url;
return this;
}
public OkGoBuilder file(String file) {
this.file = file;
return this;
}
public OkGoBuilder pdf(String pdf) {
this.pdf = pdf;
return this;
}
public OkGoBuilder method(int methodType) {
this.methodType = methodType;
return this;
}
public OkGoBuilder params(HttpParams params) {
this.params = params;
return this;
}
public OkGoBuilder list(ArrayList<File> list) {
this.list = list;
return this;
}
public OkGoBuilder jsonstr(String jsonstr) {
this.jsonstr = jsonstr;
return this;
}
public OkGoBuilder json(JSONObject json) {
this.json = json;
return this;
}
public OkGoBuilder jsonArray(JSONArray json) {
this.jsonArray = json;
return this;
}
public OkGoBuilder cls(Class<T> clazz) {
this.clazz = clazz;
return this;
}
public OkGoBuilder callback(Callback<T> callback) {
this.callback = callback;
return this;
}
public OkGoBuilder build() {
switch (methodType) {
case 1:
getRequest();
break;
case 2:
postRequest();
break;
case 3:
postRequestFile();
break;
case 4:
postRequestAloneFile();
break;
case 5:
postsRequest();
break;
}
return this;
}
/**
* post请求
*/
private void postRequest() {
OkGo
// 请求方式和请求url
.<T>post(url)
.params("param", json.toString())
// .upJson(json)
// 请求的 tag, 主要用于取消对应的请求
.tag(this)
// 设置当前请求的缓存key,建议每个不同功能的请求设置一个
// .cacheKey("cacheKey")
// 缓存模式,详细请看缓存介绍
// .cacheMode(CacheMode.DEFAULT)
.execute(new DialogCallback<T>(clazz) {
@Override
public void onSuccess(Response<T> response) {
callback.onSuccess(response.body(), 1);
}
@Override
public void onError(Response<T> response) {
super.onError(response);
Throwable throwable = response.getException();
if (throwable != null) {
throwable.printStackTrace();
callback.onError(throwable, 2);
}
}
});
}
/**
* post请求
*/
private void postsRequest() {
OkGo
// 请求方式和请求url
.<T>post(url)
.params("param", jsonArray.toString())
// .upJson(json)
// 请求的 tag, 主要用于取消对应的请求
.tag(this)
// 设置当前请求的缓存key,建议每个不同功能的请求设置一个
// .cacheKey("cacheKey")
// 缓存模式,详细请看缓存介绍
// .cacheMode(CacheMode.DEFAULT)
.execute(new DialogCallback<T>(clazz) {
@Override
public void onSuccess(Response<T> response) {
callback.onSuccess(response.body(), 1);
}
@Override
public void onError(Response<T> response) {
super.onError(response);
Throwable throwable = response.getException();
if (throwable != null) {
throwable.printStackTrace();
callback.onError(throwable, 2);
}
}
});
}
/**
* get请求
*/
private void getRequest() {
OkGo
// 请求方式和请求url
.<T>get(url)
.params(params)
// 请求的 tag, 主要用于取消对应的请求
.tag(this)
// 设置当前请求的缓存key,建议每个不同功能的请求设置一个
// .cacheKey("cacheKey")
// 缓存模式,详细请看缓存介绍
// .cacheMode(CacheMode.DEFAULT)
.execute(new DialogCallback<T>(clazz) {
@Override
public void onSuccess(Response<T> response) {
callback.onSuccess(response.body(), 1);
}
@Override
public void onError(Response<T> response) {
super.onError(response);
Throwable throwable = response.getException();
if (throwable != null) {
throwable.printStackTrace();
callback.onError(throwable, 2);
}
}
});
}
/**
* post 发送文件
*/
private void postRequestFile() {
PostRequest<T> request = OkGo.<T>post(url)
.tag(this)
.params("param", json.toString());
if (list != null && list.size() > 0) {
for (int i = 0; i < list.size(); i++) {
request.params("file_" + i, list.get(i));
}
}
if (pdf!=null){
request.params("pdf", new File(pdf));
}
request.execute(new DialogCallback<T>(clazz) {
@Override
public void onSuccess(Response<T> response) {
callback.onSuccess(response.body(), 1);
}
@Override
public void onError(Response<T> response) {
super.onError(response);
Throwable throwable = response.getException();
if (throwable != null) {
throwable.printStackTrace();
callback.onError(throwable, 2);
}
}
});
}
private void postRequestAloneFile() {
PostRequest<T> request = OkGo.<T>post(url).tag(this)
.params("param", json.toString());
if (file!=null){
request.params("file", new File(file));
}
request.execute(new DialogCallback<T>(clazz) {
@Override
public void onSuccess(Response<T> response) {
callback.onSuccess(response.body(), 1);
}
@Override
public void onError(Response<T> response) {
super.onError(response);
Throwable throwable = response.getException();
if (throwable != null) {
throwable.printStackTrace();
callback.onError(throwable, 2);
}
}
});
}
}

View File

@@ -0,0 +1,34 @@
package com.navinfo.outdoor.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;
}
}
}

View File

@@ -0,0 +1,67 @@
package com.navinfo.outdoor.util;
import android.content.Context;
import android.util.AttributeSet;
import android.view.MotionEvent;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.viewpager.widget.ViewPager;
//自定义不可滑动的VI
public class NoSlideViewPager extends ViewPager {
// 定义一个是否可以滑动的boolean 值
private boolean isCanScroll = false;
//定义一个是否可以滑动效果的boolean 值
private boolean noScrollAnim = false;
public NoSlideViewPager(@NonNull Context context) {
super(context);
}
public NoSlideViewPager(@NonNull Context context, @Nullable AttributeSet attrs) {
super(context, attrs);
}
/**
* 设置是否能左右滑动
* @param canScroll true 不能滑动
*/
public void setCanScroll(boolean canScroll) {
isCanScroll = canScroll;
}
/**
* 设置没有滑动动画
* @param noScrollAnim false 无动画
*/
public void setNoScrollAnim(boolean noScrollAnim) {
this.noScrollAnim = noScrollAnim;
}
// 滑动到指定位置
@Override
public void scrollTo(int x, int y) {
super.scrollTo(x, y);
}
@Override
public boolean onTouchEvent(MotionEvent arg0) {
return !isCanScroll && super.onTouchEvent(arg0);
}
@Override
public boolean onInterceptTouchEvent(MotionEvent arg0) {
return !isCanScroll && super.onInterceptTouchEvent(arg0);
}
@Override
public void setCurrentItem(int item, boolean smoothScroll) {
super.setCurrentItem(item, smoothScroll);
}
@Override
public void setCurrentItem(int item) {
super.setCurrentItem(item,noScrollAnim);
}
}

View File

@@ -0,0 +1,66 @@
package com.navinfo.outdoor.util;
import android.app.Activity;
import android.graphics.Rect;
import android.os.Build;
import android.view.View;
import android.view.ViewTreeObserver;
import android.widget.FrameLayout;
/**
* 2021 5 25
*/
public class SoftHideKeyBoardUtil {
public static void assistActivity(Activity activity) {
new SoftHideKeyBoardUtil(activity);
}
private View mChildOfContent;
private int usableHeightPrevious;
private FrameLayout.LayoutParams frameLayoutParams; //为适应华为小米等手机键盘上方出现黑条或不适配
private int contentHeight;//获取setContentView本来view的高度
private boolean isfirst = true;//只用获取一次
private int statusBarHeight;//状态栏高度
private SoftHideKeyBoardUtil(Activity activity) { //1、找到Activity的最外层布局控件它其实是一个DecorView,它所用的控件就是FrameLayout
FrameLayout content = (FrameLayout) activity.findViewById(android.R.id.content); //2、获取到setContentView放进去的View
mChildOfContent = content.getChildAt(0); //3、给Activity的xml布局设置View树监听当布局有变化如键盘弹出或收起时都会回调此监听
mChildOfContent.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { //4、软键盘弹起会使GlobalLayout发生变化
public void onGlobalLayout() {
if (isfirst) {
contentHeight = mChildOfContent.getHeight();//兼容华为等机型
isfirst = false;
} //5、当前布局发生变化时对Activity的xml布局进行重绘
possiblyResizeChildOfContent();
}
}); //6、获取到Activity的xml布局的放置参数
frameLayoutParams = (FrameLayout.LayoutParams) mChildOfContent.getLayoutParams();
} // 获取界面可用高度如果软键盘弹起后Activity的xml布局可用高度需要减去键盘高度
private void possiblyResizeChildOfContent() { //1、获取当前界面可用高度键盘弹起后当前界面可用布局会减少键盘的高度
int usableHeightNow = computeUsableHeight(); //2、如果当前可用高度和原始值不一样
if (usableHeightNow != usableHeightPrevious) { //3、获取Activity中xml中布局在当前界面显示的高度
int usableHeightSansKeyboard = mChildOfContent.getRootView().getHeight(); //4、Activity中xml布局的高度-当前可用高度
int heightDifference = usableHeightSansKeyboard - usableHeightNow; //5、高度差大于屏幕1/4时说明键盘弹出
if (heightDifference > (usableHeightSansKeyboard / 4)) { // 6、键盘弹出了Activity的xml布局高度应当减去键盘高度
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference + statusBarHeight;
} else {
frameLayoutParams.height = usableHeightSansKeyboard - heightDifference;
}
} else {
frameLayoutParams.height = contentHeight;
} //7、 重绘Activity的xml布局
mChildOfContent.requestLayout();
usableHeightPrevious = usableHeightNow;
}
}
private int computeUsableHeight() {
Rect r = new Rect();
mChildOfContent.getWindowVisibleDisplayFrame(r); // 全屏模式下直接返回r.bottomr.top其实是状态栏的高度
return (r.bottom - r.top);
}
}

View File

@@ -0,0 +1,94 @@
package com.navinfo.outdoor.util;
import android.graphics.Rect;
import android.view.View;
import android.view.ViewTreeObserver;
import java.util.LinkedList;
import java.util.List;
/**
* Created by yzb_android on
* 作用:监听软键盘
*/
public class SoftKeyboardStateHelper implements ViewTreeObserver.OnGlobalLayoutListener {
public interface SoftKeyboardStateListener {
void onSoftKeyboardOpened(int keyboardHeightInPx);
void onSoftKeyboardClosed();
}
private final List<SoftKeyboardStateListener> listeners = new LinkedList<SoftKeyboardStateListener>();
private final View activityRootView;
private int lastSoftKeyboardHeightInPx;
private boolean isSoftKeyboardOpened;
public SoftKeyboardStateHelper(View activityRootView) {
this(activityRootView, false);
}
public SoftKeyboardStateHelper(View activityRootView, boolean isSoftKeyboardOpened) {
this.activityRootView = activityRootView;
this.isSoftKeyboardOpened = isSoftKeyboardOpened;
activityRootView.getViewTreeObserver().addOnGlobalLayoutListener(this);
}
@Override
public void onGlobalLayout() {
final Rect r = new Rect();
//r will be populated with the coordinates of your view that area still visible.
activityRootView.getWindowVisibleDisplayFrame(r);
final int heightDiff = activityRootView.getRootView().getHeight() - (r.bottom - r.top);
if (!isSoftKeyboardOpened && heightDiff > 100) { // if more than 100 pixels, its probably a keyboard...
isSoftKeyboardOpened = true;
notifyOnSoftKeyboardOpened(heightDiff);
} else if (isSoftKeyboardOpened && heightDiff < 100) {
isSoftKeyboardOpened = false;
notifyOnSoftKeyboardClosed();
}
}
public void setIsSoftKeyboardOpened(boolean isSoftKeyboardOpened) {
this.isSoftKeyboardOpened = isSoftKeyboardOpened;
}
public boolean isSoftKeyboardOpened() {
return isSoftKeyboardOpened;
}
/**
* Default value is zero (0)
* @return last saved keyboard height in px
*/
public int getLastSoftKeyboardHeightInPx() {
return lastSoftKeyboardHeightInPx;
}
public void addSoftKeyboardStateListener(SoftKeyboardStateListener listener) {
listeners.add(listener);
}
public void removeSoftKeyboardStateListener(SoftKeyboardStateListener listener) {
listeners.remove(listener);
}
private void notifyOnSoftKeyboardOpened(int keyboardHeightInPx) {
this.lastSoftKeyboardHeightInPx = keyboardHeightInPx;
for (SoftKeyboardStateListener listener : listeners) {
if (listener != null) {
listener.onSoftKeyboardOpened(keyboardHeightInPx);
}
}
}
private void notifyOnSoftKeyboardClosed() {
for (SoftKeyboardStateListener listener : listeners) {
if (listener != null) {
listener.onSoftKeyboardClosed();
}
}
}
}

View File

@@ -0,0 +1,26 @@
package com.navinfo.outdoor.util;
import org.json.JSONException;
import org.json.JSONObject;
//去掉空的字符
public class Whetherisempty {
public static String getClfz(String s) throws JSONException {
JSONObject jsonObject = new JSONObject(s);
if (String.valueOf(jsonObject.get("body")).equals("[]") || String.valueOf(jsonObject.get("body")).equals("")) {
jsonObject.put("body", null);
return jsonObject.toString();
} else {
return s;
}
}
public static String getCl(String s) {
String s2 = s.substring(s.length() - 3, s.length() - 1);
if (s2.equals("[]") || s2.equals("")) {
return s.substring(0, s.lastIndexOf(",")) + "}";
} else {
return s;
}
}
}