更改包名
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
}
|
||||
163
app/src/main/java/com/navinfo/outdoor/activity/WebActivity.java
Normal file
163
app/src/main/java/com/navinfo/outdoor/activity/WebActivity.java
Normal 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\"><style> 标签用于为 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);
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
package com.navinfo.outdoor.api;
|
||||
|
||||
public interface ApiService {
|
||||
}
|
||||
@@ -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)));
|
||||
//使用内存保持cookie,app退出后,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);
|
||||
}
|
||||
|
||||
}
|
||||
120
app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java
Normal file
120
app/src/main/java/com/navinfo/outdoor/base/BaseActivity.java
Normal 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);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -0,0 +1,6 @@
|
||||
package com.navinfo.outdoor.base;
|
||||
|
||||
public interface BaseCallBack<T> {
|
||||
void onSuccess(T t);
|
||||
void onFail(String error);
|
||||
}
|
||||
82
app/src/main/java/com/navinfo/outdoor/base/BaseFragment.java
Normal file
82
app/src/main/java/com/navinfo/outdoor/base/BaseFragment.java
Normal 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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
|
||||
}
|
||||
12
app/src/main/java/com/navinfo/outdoor/base/BaseModel.java
Normal file
12
app/src/main/java/com/navinfo/outdoor/base/BaseModel.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
61
app/src/main/java/com/navinfo/outdoor/base/BaseObserver.java
Normal file
61
app/src/main/java/com/navinfo/outdoor/base/BaseObserver.java
Normal 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() {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
6
app/src/main/java/com/navinfo/outdoor/base/BaseView.java
Normal file
6
app/src/main/java/com/navinfo/outdoor/base/BaseView.java
Normal file
@@ -0,0 +1,6 @@
|
||||
package com.navinfo.outdoor.base;
|
||||
|
||||
public interface BaseView<T> {
|
||||
void onSuccess(T t);
|
||||
void onFail(String error);
|
||||
}
|
||||
26
app/src/main/java/com/navinfo/outdoor/base/Collector.java
Normal file
26
app/src/main/java/com/navinfo/outdoor/base/Collector.java
Normal 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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
49
app/src/main/java/com/navinfo/outdoor/bean/BolBean.java
Normal file
49
app/src/main/java/com/navinfo/outdoor/bean/BolBean.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
27
app/src/main/java/com/navinfo/outdoor/bean/ExamBean.java
Normal file
27
app/src/main/java/com/navinfo/outdoor/bean/ExamBean.java
Normal 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;
|
||||
}
|
||||
}
|
||||
@@ -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 +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
38
app/src/main/java/com/navinfo/outdoor/bean/ListBean.java
Normal file
38
app/src/main/java/com/navinfo/outdoor/bean/ListBean.java
Normal 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;
|
||||
}
|
||||
}
|
||||
184
app/src/main/java/com/navinfo/outdoor/bean/MeasureBean.java
Normal file
184
app/src/main/java/com/navinfo/outdoor/bean/MeasureBean.java
Normal 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 +
|
||||
'}';
|
||||
}
|
||||
}
|
||||
144
app/src/main/java/com/navinfo/outdoor/bean/TaskExplainBean.java
Normal file
144
app/src/main/java/com/navinfo/outdoor/bean/TaskExplainBean.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
143
app/src/main/java/com/navinfo/outdoor/bean/TaskExplainInfo.java
Normal file
143
app/src/main/java/com/navinfo/outdoor/bean/TaskExplainInfo.java
Normal 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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
138
app/src/main/java/com/navinfo/outdoor/fragment/MineFragment.java
Normal file
138
app/src/main/java/com/navinfo/outdoor/fragment/MineFragment.java
Normal 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;
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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) {
|
||||
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
@@ -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);//显示图像
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
|
||||
}
|
||||
24
app/src/main/java/com/navinfo/outdoor/http/Callback.java
Normal file
24
app/src/main/java/com/navinfo/outdoor/http/Callback.java
Normal 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);
|
||||
}
|
||||
@@ -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() {
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
@@ -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
|
||||
|
||||
|
||||
|
||||
}
|
||||
53
app/src/main/java/com/navinfo/outdoor/http/JsonCallback.java
Normal file
53
app/src/main/java/com/navinfo/outdoor/http/JsonCallback.java
Normal 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;
|
||||
}
|
||||
}
|
||||
322
app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java
Normal file
322
app/src/main/java/com/navinfo/outdoor/http/OkGoBuilder.java
Normal 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);
|
||||
}
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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.bottom,r.top其实是状态栏的高度
|
||||
return (r.bottom - r.top);
|
||||
}
|
||||
|
||||
}
|
||||
@@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user