Commit 7b8a1324a006bb169d780cd0c515f47f459409d1

Authored by 韩亚云
1 parent 54e1430c

约跑线路接口对接,增加下拉刷新,下拉加载更多,增加错误页面

Showing 20 changed files with 573 additions and 93 deletions
lib_network/src/main/java/com/cnlive/strike/data/network/api/ApiServiceDaren.java
... ... @@ -7,9 +7,10 @@ import com.cnlive.strike.data.network.model.CheckTransferInfo;
7 7 import com.cnlive.strike.data.network.model.DarenApplyModel;
8 8 import com.cnlive.strike.data.network.model.GifEmojiItemData;
9 9 import com.cnlive.strike.data.network.model.GifListData;
10   -import com.cnlive.strike.data.network.model.RaceRecordInfo;
  10 +import com.cnlive.strike.data.network.model.runAbout.RaceRecordInfo;
11 11 import com.cnlive.strike.data.network.model.ShortLinkInfo;
12   -import com.cnlive.strike.data.network.model.TakePartPeopleInfo;
  12 +import com.cnlive.strike.data.network.model.runAbout.RunLineInfo;
  13 +import com.cnlive.strike.data.network.model.runAbout.TakePartPeopleInfo;
13 14 import com.cnlive.strike.data.network.model.runAbout.RunRaceDetailInfo;
14 15  
15 16 import java.util.List;
... ... @@ -118,5 +119,12 @@ public interface ApiServiceDaren {
118 119 */
119 120 @GET("Daren/event/getEventDetails.action")
120 121 Observable<Result<BaseInfo<RunRaceDetailInfo>>> getRunRaceDetail(@QueryMap Map<String, String> map);
  122 +
  123 +
  124 + /**
  125 + * 约跑线路列表
  126 + */
  127 + @POST("Daren/event/getEventList.action")
  128 + Observable<Result<BaseInfo<RunLineInfo>>> getRunLineListInfo(@QueryMap() Map<String, String> maps);
121 129 }
122 130  
... ...
lib_network/src/main/java/com/cnlive/strike/data/network/model/RaceRecordInfo.java renamed to lib_network/src/main/java/com/cnlive/strike/data/network/model/runAbout/RaceRecordInfo.java
1   -package com.cnlive.strike.data.network.model;
  1 +package com.cnlive.strike.data.network.model.runAbout;
2 2  
3 3  
4 4 import java.util.List;
... ...
lib_network/src/main/java/com/cnlive/strike/data/network/model/runAbout/RunLineInfo.java 0 → 100644
  1 +package com.cnlive.strike.data.network.model.runAbout;
  2 +
  3 +import java.util.List;
  4 +
  5 +/**
  6 + * Created by hanyayun 019/06/14.
  7 + */
  8 +public class RunLineInfo {
  9 +
  10 + /**
  11 + * hasNext : false
  12 + * list : [{"address":"巴彦浩特体育场","end_time":1536894000000,"faceUrl":[],"id":134,"signResult":false,"signupNum":0,"start_time":1536966000000,"title":"2018阿拉善旅游文化节·户外徒步大会 \u201c助力冬奥·阿拉善在行动\u201d"},{"address":"内蒙古阿拉善左旗巴彦浩特体育场","end_time":1536980400000,"faceUrl":[],"id":133,"signResult":false,"signupNum":0,"start_time":1536966000000,"title":"2018阿拉善旅游文化节·阿拉善半程马拉松\u201c助力冬奥·阿拉善在行动\u201d"},{"address":"东莞市同沙生态公园","end_time":1524366000000,"faceUrl":[],"id":132,"signResult":false,"signupNum":0,"start_time":1524355200000,"title":"2018东莞市东城旅游节暨世界大众体育杯·粤港澳大湾区(东莞)户外徒步大会"},{"address":"青海湖","end_time":1472632140000,"faceUrl":[],"id":119,"signResult":false,"signupNum":0,"start_time":1472455620000,"title":"2016第三届环青海湖国际电动汽车拉力赛"},{"address":"北京长阳","end_time":1498719300000,"faceUrl":[],"id":118,"signResult":false,"signupNum":0,"start_time":1498546380000,"title":"2017北京长阳全城热跑赛火力全开"},{"address":"内蒙古鄂尔多斯市准格尔旗","end_time":1565697600000,"faceUrl":[],"id":117,"mileage":"全长4.43公里","signResult":false,"signupNum":0,"start_time":1502409600000,"title":"世界大众体育杯 · 2017准格尔国际徒步大会"},{"address":"澳大利亚黄金海岸","end_time":1571140800000,"faceUrl":["http://yweb0.cnliveimg.com/images/headImg/2019/0505/1557039035723_small.jpg","http://yweb0.cnliveimg.com/images/headImg/2019/0505/1557034319038_small.jpg","http://yweb0.cnliveimg.com/images/headImg/2018/0902/1535858459612_small.jpg"],"id":116,"mileage":"全长4.42公里","signResult":true,"signupNum":3,"start_time":1522454400000,"title":"2018国际网络徒步大赛黄金海岸站"},{"address":"内蒙古阿拉善左旗巴彦浩特体育场","end_time":1536894000000,"faceUrl":[],"id":135,"signResult":false,"signupNum":0,"start_time":1536966000000,"title":"2018阿拉善旅游文化节·户外徒步大会 \u201c助力冬奥·阿拉善在行动\u201d"}]
  13 + * pageNumber : 1
  14 + * pageSize : 10
  15 + * startIndex : 0
  16 + * totalPage : 1
  17 + * totalRecord : 8
  18 + */
  19 +
  20 + private boolean hasNext;
  21 + private int pageNumber;
  22 + private int pageSize;
  23 + private int startIndex;
  24 + private int totalPage;
  25 + private int totalRecord;
  26 + private List<ListBean> list;
  27 +
  28 + public boolean isHasNext() {
  29 + return hasNext;
  30 + }
  31 +
  32 + public void setHasNext(boolean hasNext) {
  33 + this.hasNext = hasNext;
  34 + }
  35 +
  36 + public int getPageNumber() {
  37 + return pageNumber;
  38 + }
  39 +
  40 + public void setPageNumber(int pageNumber) {
  41 + this.pageNumber = pageNumber;
  42 + }
  43 +
  44 + public int getPageSize() {
  45 + return pageSize;
  46 + }
  47 +
  48 + public void setPageSize(int pageSize) {
  49 + this.pageSize = pageSize;
  50 + }
  51 +
  52 + public int getStartIndex() {
  53 + return startIndex;
  54 + }
  55 +
  56 + public void setStartIndex(int startIndex) {
  57 + this.startIndex = startIndex;
  58 + }
  59 +
  60 + public int getTotalPage() {
  61 + return totalPage;
  62 + }
  63 +
  64 + public void setTotalPage(int totalPage) {
  65 + this.totalPage = totalPage;
  66 + }
  67 +
  68 + public int getTotalRecord() {
  69 + return totalRecord;
  70 + }
  71 +
  72 + public void setTotalRecord(int totalRecord) {
  73 + this.totalRecord = totalRecord;
  74 + }
  75 +
  76 + public List<ListBean> getList() {
  77 + return list;
  78 + }
  79 +
  80 + public void setList(List<ListBean> list) {
  81 + this.list = list;
  82 + }
  83 +
  84 + public static class ListBean {
  85 + /**
  86 + * address : 巴彦浩特体育场
  87 + * end_time : 1536894000000
  88 + * faceUrl : []
  89 + * id : 134
  90 + * signResult : false
  91 + * signupNum : 0
  92 + * start_time : 1536966000000
  93 + * title : 2018阿拉善旅游文化节·户外徒步大会 “助力冬奥·阿拉善在行动”
  94 + * mileage : 全长4.43公里
  95 + */
  96 +
  97 + private String address;
  98 + private long end_time;
  99 + private int id;
  100 + private boolean signResult;
  101 + private int signupNum;
  102 + private long start_time;
  103 + private String title;
  104 + private String mileage;
  105 + private List<String> faceUrl;
  106 +
  107 + public String getAddress() {
  108 + return address;
  109 + }
  110 +
  111 + public void setAddress(String address) {
  112 + this.address = address;
  113 + }
  114 +
  115 + public long getEnd_time() {
  116 + return end_time;
  117 + }
  118 +
  119 + public void setEnd_time(long end_time) {
  120 + this.end_time = end_time;
  121 + }
  122 +
  123 + public int getId() {
  124 + return id;
  125 + }
  126 +
  127 + public void setId(int id) {
  128 + this.id = id;
  129 + }
  130 +
  131 + public boolean isSignResult() {
  132 + return signResult;
  133 + }
  134 +
  135 + public void setSignResult(boolean signResult) {
  136 + this.signResult = signResult;
  137 + }
  138 +
  139 + public int getSignupNum() {
  140 + return signupNum;
  141 + }
  142 +
  143 + public void setSignupNum(int signupNum) {
  144 + this.signupNum = signupNum;
  145 + }
  146 +
  147 + public long getStart_time() {
  148 + return start_time;
  149 + }
  150 +
  151 + public void setStart_time(long start_time) {
  152 + this.start_time = start_time;
  153 + }
  154 +
  155 + public String getTitle() {
  156 + return title;
  157 + }
  158 +
  159 + public void setTitle(String title) {
  160 + this.title = title;
  161 + }
  162 +
  163 + public String getMileage() {
  164 + return mileage;
  165 + }
  166 +
  167 + public void setMileage(String mileage) {
  168 + this.mileage = mileage;
  169 + }
  170 +
  171 + public List<String> getFaceUrl() {
  172 + return faceUrl;
  173 + }
  174 +
  175 + public void setFaceUrl(List<String> faceUrl) {
  176 + this.faceUrl = faceUrl;
  177 + }
  178 + }
  179 +}
... ...
lib_network/src/main/java/com/cnlive/strike/data/network/model/TakePartPeopleInfo.java renamed to lib_network/src/main/java/com/cnlive/strike/data/network/model/runAbout/TakePartPeopleInfo.java
1   -package com.cnlive.strike.data.network.model;
  1 +package com.cnlive.strike.data.network.model.runAbout;
2 2  
3 3  
4 4 import java.util.List;
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RaceRecorPresenter.java
1 1 package com.cnlive.moudle.pedometer.frame.presenter;
2 2  
3 3 import android.content.Context;
4   -import android.widget.Toast;
5 4  
6 5 import com.cnlive.libs.base.logic.Logic;
7 6 import com.cnlive.libs.base.logic.callback.DataCallback;
... ... @@ -11,7 +10,7 @@ import com.cnlive.moudle.pedometer.frame.view.RaceRecorView;
11 10 import com.cnlive.strike.data.network.api.ApiRequest;
12 11 import com.cnlive.strike.data.network.api.ApiServiceDaren;
13 12 import com.cnlive.strike.data.network.model.BaseInfo;
14   -import com.cnlive.strike.data.network.model.RaceRecordInfo;
  13 +import com.cnlive.strike.data.network.model.runAbout.RaceRecordInfo;
15 14 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
16 15  
17 16 import java.util.HashMap;
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/RunLinePresenter.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.presenter;
  2 +
  3 +import android.content.Context;
  4 +
  5 +import com.cnlive.libs.base.logic.Logic;
  6 +import com.cnlive.libs.base.logic.callback.DataCallback;
  7 +import com.cnlive.libs.base.logic.callback.FailureCallback;
  8 +import com.cnlive.libs.base.logic.callback.SuccessCallback;
  9 +import com.cnlive.moudle.pedometer.frame.view.RunLineView;
  10 +import com.cnlive.strike.data.network.api.ApiRequest;
  11 +import com.cnlive.strike.data.network.api.ApiServiceDaren;
  12 +import com.cnlive.strike.data.network.model.BaseInfo;
  13 +import com.cnlive.strike.data.network.model.runAbout.RaceRecordInfo;
  14 +import com.cnlive.strike.data.network.model.runAbout.RunLineInfo;
  15 +import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
  16 +
  17 +import java.util.HashMap;
  18 +import java.util.Map;
  19 +
  20 +import io.reactivex.disposables.Disposable;
  21 +
  22 +/**
  23 + * Created by hanyayun 019/06/14.
  24 + */
  25 +public class RunLinePresenter extends MvpBasePresenter<RunLineView> {
  26 +
  27 + public void setData(Context context,String sid, int pageNo, int pageSize){
  28 + HashMap<String, String> map = new HashMap<>();
  29 + map.put("sid", sid);
  30 + map.put("pageNo", pageNo+"");
  31 + map.put("pageSize", pageSize+"");
  32 + getView().showLoading();
  33 + Logic.create(map).action(new Logic.Action<Map<String, String>, BaseInfo<RunLineInfo>>() {
  34 + @Override
  35 + public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo<RunLineInfo>> dataCallback) {
  36 + return ApiRequest.observable(ApiServiceDaren.class, api -> api.getRunLineListInfo(stringStringMap)).subscribe(context, dataCallback);
  37 + }
  38 + }).<BaseInfo<RunLineInfo>>event().setFailureCallback(new FailureCallback() {
  39 + @Override
  40 + public void onFailure(int code, String message) {
  41 + if (getView() != null) {
  42 + getView().showErr(message);
  43 + getView().hideLoading();
  44 + }
  45 + }
  46 + }).setSuccessCallback(new SuccessCallback<BaseInfo<RunLineInfo>>() {
  47 + @Override
  48 + public void onSuccess(BaseInfo<RunLineInfo> registerInfo) {
  49 + if (getView() != null){
  50 + getView().onSuccess(registerInfo);
  51 + }
  52 + }
  53 + }).start();
  54 + }
  55 +}
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/presenter/TakePartPresenter.java
... ... @@ -8,11 +8,9 @@ import com.cnlive.libs.base.logic.callback.FailureCallback;
8 8 import com.cnlive.libs.base.logic.callback.SuccessCallback;
9 9 import com.cnlive.moudle.pedometer.frame.view.TakePartView;
10 10 import com.cnlive.strike.data.network.api.ApiRequest;
11   -import com.cnlive.strike.data.network.api.ApiServiceCms;
12 11 import com.cnlive.strike.data.network.api.ApiServiceDaren;
13   -import com.cnlive.strike.data.network.model.AudioAlbumDetailsInfo;
14 12 import com.cnlive.strike.data.network.model.BaseInfo;
15   -import com.cnlive.strike.data.network.model.TakePartPeopleInfo;
  13 +import com.cnlive.strike.data.network.model.runAbout.TakePartPeopleInfo;
16 14 import com.hannesdorfmann.mosby3.mvp.MvpBasePresenter;
17 15  
18 16 import java.util.HashMap;
... ... @@ -25,11 +23,12 @@ import io.reactivex.disposables.Disposable;
25 23 */
26 24 public class TakePartPresenter extends MvpBasePresenter<TakePartView> {
27 25  
28   - public void setData(Context context,String eventId, long pageNo, long pageSize){
  26 + public void setData(Context context,String eventId, long pageNo,long pageSize){
29 27 HashMap<String, String> map = new HashMap<>();
30 28 map.put("eventId", eventId);
31 29 map.put("pageNo", pageNo+"");
32 30 map.put("pageSize", pageSize+"");
  31 + if (getView() != null && pageNo ==1) getView().showLoading();
33 32 Logic.create(map).action(new Logic.Action<Map<String, String>, BaseInfo<TakePartPeopleInfo>>() {
34 33 @Override
35 34 public Disposable action(Map<String, String> stringStringMap, DataCallback<BaseInfo<TakePartPeopleInfo>> dataCallback) {
... ... @@ -38,7 +37,10 @@ public class TakePartPresenter extends MvpBasePresenter&lt;TakePartView&gt; {
38 37 }).<BaseInfo<TakePartPeopleInfo>>event().setFailureCallback(new FailureCallback() {
39 38 @Override
40 39 public void onFailure(int code, String message) {
41   - if (getView() != null) getView().showErr(message);
  40 + if (getView() != null) {
  41 + getView().showErr(message);
  42 + getView().hideLoading();
  43 + }
42 44 }
43 45 }).setSuccessCallback(new SuccessCallback<BaseInfo<TakePartPeopleInfo>>() {
44 46 @Override
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/MyRecordView.java
... ... @@ -31,15 +31,15 @@ public class MyRecordView implements MvpView {
31 31 list.add("fff");
32 32 list.add("fff");
33 33 list.add("fff");
34   - MyRecordAdapter myRecordAdapter = new MyRecordAdapter(list,fragment.getActivity(),true);
35   - fragment.binding.myRecordRecy.setAdapter(myRecordAdapter);
36   - myRecordAdapter.setClickListener(new MyRecordAdapter.OnClickListener() {
37   - @Override
38   - public void onClickListener(String msg, int position) {
39   - Intent intent = new Intent(fragment.getActivity(), RunRaceDetailActivity.class);
40   - fragment.getActivity().startActivity(intent);
41   - }
42   - });
  34 +// MyRecordAdapter myRecordAdapter = new MyRecordAdapter(list,fragment.getActivity(),true);
  35 +// fragment.binding.myRecordRecy.setAdapter(myRecordAdapter);
  36 +// myRecordAdapter.setClickListener(new MyRecordAdapter.OnClickListener() {
  37 +// @Override
  38 +// public void onClickListener(String msg, int position) {
  39 +// Intent intent = new Intent(fragment.getActivity(), RunRaceDetailActivity.class);
  40 +// fragment.getActivity().startActivity(intent);
  41 +// }
  42 +// });
43 43 }
44 44  
45 45 public void initView(){
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RaceRecorView.java
... ... @@ -3,18 +3,14 @@ package com.cnlive.moudle.pedometer.frame.view;
3 3 import android.support.v7.widget.LinearLayoutManager;
4 4 import android.view.View;
5 5  
6   -import com.cnlive.libs.base.util.StatusBarUtil;
7 6 import com.cnlive.moudle.pedometer.ui.activity.ShareRecordActivity;
8 7 import com.cnlive.moudle.pedometer.ui.adapter.RaceRecordAdapter;
9 8 import com.cnlive.moudle.pedometer.ui.fragment.RaceRecorFragment;
10 9 import com.cnlive.strike.data.network.model.BaseInfo;
11   -import com.cnlive.strike.data.network.model.RaceRecordInfo;
  10 +import com.cnlive.strike.data.network.model.runAbout.RaceRecordInfo;
12 11 import com.example.moudle_pedometer.R;
13 12 import com.hannesdorfmann.mosby3.mvp.MvpView;
14 13  
15   -import java.util.ArrayList;
16   -import java.util.List;
17   -
18 14 /**
19 15 * Created by hanyayun 019/05/30.
20 16 */
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/RunLineView.java 0 → 100644
  1 +package com.cnlive.moudle.pedometer.frame.view;
  2 +
  3 +import android.content.Intent;
  4 +import android.support.v7.widget.LinearLayoutManager;
  5 +import android.view.View;
  6 +
  7 +import com.cnlive.libs.base.util.AlertUtil;
  8 +import com.cnlive.moudle.pedometer.ui.activity.MyRecordActivity;
  9 +import com.cnlive.moudle.pedometer.ui.activity.RunRaceDetailActivity;
  10 +import com.cnlive.moudle.pedometer.ui.adapter.MyRecordAdapter;
  11 +import com.cnlive.moudle.pedometer.ui.fragment.RunLineFragment;
  12 +import com.cnlive.strike.data.network.model.BaseInfo;
  13 +import com.cnlive.strike.data.network.model.runAbout.RunLineInfo;
  14 +import com.example.moudle_pedometer.R;
  15 +import com.hannesdorfmann.mosby3.mvp.MvpView;
  16 +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
  17 +import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
  18 +import com.scwang.smartrefresh.layout.header.ClassicsHeader;
  19 +
  20 +import java.util.ArrayList;
  21 +import java.util.List;
  22 +
  23 +/**
  24 + * Created by hanyayun 019/06/14.
  25 + */
  26 +public class RunLineView implements MvpView {
  27 +
  28 + private RunLineFragment fragment;
  29 + public QMUITipDialog loadingDiaog;
  30 + private MyRecordAdapter adapter;
  31 + private List<RunLineInfo.ListBean> list = new ArrayList<>();
  32 +
  33 + public RunLineView(RunLineFragment fragment) {
  34 + this.fragment = fragment;
  35 + loadingDiaog = new QMUITipDialog.Builder(fragment.getActivity())
  36 + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
  37 + .setTipWord("请稍后")
  38 + .create();
  39 + }
  40 +
  41 + public void initView(){
  42 + fragment.binding.refreshLayout.setRefreshHeader(new ClassicsHeader(fragment.getActivity()));
  43 + fragment.binding.refreshLayout.setRefreshFooter(new ClassicsFooter(fragment.getActivity()));
  44 + fragment.binding.backBtn.setOnClickListener(v -> fragment.getActivity().finish());
  45 + fragment.binding.myActivity.setOnClickListener(v -> MyRecordActivity.newInstance(fragment.getActivity()));
  46 +
  47 + fragment.binding.runLineRecy.setLayoutManager(new LinearLayoutManager(fragment.getActivity()));
  48 + }
  49 +
  50 + public void onSuccess(BaseInfo<RunLineInfo> runLineInfoBaseInfo){
  51 + hideLoading();
  52 + if(fragment.currentPage == 1){
  53 + list.clear();
  54 + list.addAll(runLineInfoBaseInfo.getData().getList());
  55 + if(adapter == null){
  56 + adapter = new MyRecordAdapter(list,fragment.getActivity(),false);
  57 + fragment.binding.runLineRecy.setAdapter(adapter);
  58 + adapter.setClickListener(new MyRecordAdapter.OnClickListener() {
  59 + @Override
  60 + public void onClickListener(RunLineInfo.ListBean bean, int position) {
  61 + RunRaceDetailActivity.startActivity(fragment.getActivity(),bean.getId()+"");
  62 + }
  63 + });
  64 + }else {
  65 + adapter.notifyDataSetChanged();
  66 + }
  67 + }
  68 +
  69 + if(list.size() != 0){
  70 + fragment.binding.empty.setVisibility(View.GONE);
  71 + fragment.binding.refreshLayout.setVisibility(View.VISIBLE);
  72 + }else {
  73 + showEmpty();
  74 + }
  75 +
  76 + if(runLineInfoBaseInfo.getData().getList().size() < fragment.pageSize){
  77 + fragment.binding.refreshLayout.setEnableLoadMore(false);
  78 + }else {
  79 + fragment.binding.refreshLayout.setEnableLoadMore(true);
  80 + }
  81 + if(fragment.currentPage > 1){
  82 + list.addAll(runLineInfoBaseInfo.getData().getList());
  83 + adapter.notifyDataSetChanged();
  84 + }
  85 + fragment.binding.refreshLayout.finishRefresh();
  86 + fragment.binding.refreshLayout.finishLoadMore();
  87 + }
  88 +
  89 + public void showErr(String msg){
  90 + fragment.binding.refreshLayout.finishRefresh();
  91 + fragment.binding.refreshLayout.finishLoadMore();
  92 + if (list.size() == 0) {
  93 + fragment.binding.empty.setVisibility(View.VISIBLE);
  94 + fragment.binding.refreshLayout.setVisibility(View.GONE);
  95 + fragment.binding.empty.setDetailText(fragment.getResources().getString(R.string.msg_failed_network_detail));
  96 + fragment.binding.empty.setTitleText(msg);
  97 + fragment.binding.empty.setButton("重试", new View.OnClickListener() {
  98 + @Override
  99 + public void onClick(View v) {
  100 + fragment.currentPage = 1;
  101 + fragment.getPresenter().setData(fragment.getActivity(),"10514343",fragment.currentPage,fragment.pageSize);
  102 + }
  103 + });
  104 + fragment.binding.empty.setLoadingShowing(false);
  105 + fragment.binding.empty.setImage(R.drawable.wufalianjie);
  106 + } else {
  107 + fragment.binding.empty.setVisibility(View.GONE);
  108 + fragment.binding.refreshLayout.setVisibility(View.VISIBLE);
  109 + showToast(msg);
  110 + }
  111 + }
  112 +
  113 +
  114 + public void showToast(String message) {
  115 + AlertUtil.showDeftToast(fragment.getActivity(), message);
  116 + }
  117 +
  118 + public void showEmpty(){
  119 + fragment.binding.empty.setVisibility(View.VISIBLE);
  120 + fragment.binding.refreshLayout.setVisibility(View.GONE);
  121 + fragment.binding.empty.show("没有相关数据", "", R.drawable.zhuangtai_kong);
  122 + }
  123 +
  124 +
  125 + public void showLoading() {
  126 + if (loadingDiaog != null) loadingDiaog.show();
  127 + }
  128 +
  129 + public void hideLoading() {
  130 + if (loadingDiaog != null) loadingDiaog.dismiss();
  131 + }
  132 +}
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/frame/view/TakePartView.java
1 1 package com.cnlive.moudle.pedometer.frame.view;
2 2  
3 3 import android.support.v7.widget.LinearLayoutManager;
  4 +import android.view.View;
4 5  
  6 +import com.cnlive.libs.base.util.AlertUtil;
5 7 import com.cnlive.moudle.pedometer.ui.adapter.TakePartAdapter;
6 8 import com.cnlive.moudle.pedometer.ui.fragment.TakePartFragment;
7 9 import com.cnlive.strike.data.network.model.BaseInfo;
8   -import com.cnlive.strike.data.network.model.TakePartPeopleInfo;
  10 +import com.cnlive.strike.data.network.model.runAbout.TakePartPeopleInfo;
9 11 import com.example.moudle_pedometer.R;
10 12 import com.hannesdorfmann.mosby3.mvp.MvpView;
  13 +import com.qmuiteam.qmui.widget.dialog.QMUITipDialog;
  14 +import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
  15 +import com.scwang.smartrefresh.layout.header.ClassicsHeader;
11 16  
12 17 import java.util.ArrayList;
13 18 import java.util.List;
... ... @@ -18,9 +23,16 @@ import java.util.List;
18 23 public class TakePartView implements MvpView {
19 24  
20 25 private TakePartFragment fragment;
  26 + public QMUITipDialog loadingDiaog;
  27 + private TakePartAdapter adapter;
  28 + private List<TakePartPeopleInfo.UserMsgsBean> list = new ArrayList<>();
21 29  
22 30 public TakePartView(TakePartFragment fragment) {
23 31 this.fragment = fragment;
  32 + loadingDiaog = new QMUITipDialog.Builder(fragment.getActivity())
  33 + .setIconType(QMUITipDialog.Builder.ICON_TYPE_LOADING)
  34 + .setTipWord("请稍后")
  35 + .create();
24 36 }
25 37  
26 38 public void initView(){
... ... @@ -29,18 +41,85 @@ public class TakePartView implements MvpView {
29 41 });
30 42 fragment.binding.topbar.setTitle("已参与");
31 43 fragment.binding.takePartRecy.setLayoutManager(new LinearLayoutManager(fragment.getActivity()));
32   -
33   - fragment.binding.refreshLayout.setOnRefreshListener(v ->{
34   -
35   - });
36   -// fragment.binding.refreshLayout.setOn
  44 + fragment.binding.refreshLayout.setRefreshHeader(new ClassicsHeader(fragment.getActivity()));
  45 + fragment.binding.refreshLayout.setRefreshFooter(new ClassicsFooter(fragment.getActivity()));
37 46 }
38 47  
39 48 public void onSuccess(BaseInfo<TakePartPeopleInfo> partPeopleInfoBaseInfo){
40   - fragment.binding.takePartRecy.setAdapter(new TakePartAdapter(partPeopleInfoBaseInfo.getData().getUserMsgs(),fragment.getActivity()));
  49 + hideLoading();
  50 + if(fragment.currentPage == 1){
  51 + list.clear();
  52 + list.addAll(partPeopleInfoBaseInfo.getData().getUserMsgs());
  53 + if(adapter == null){
  54 + adapter = new TakePartAdapter(list,fragment.getActivity());
  55 + fragment.binding.takePartRecy.setAdapter(adapter);
  56 + }else {
  57 + adapter.notifyDataSetChanged();
  58 + }
  59 + }
  60 +
  61 + if(list.size() != 0){
  62 + fragment.binding.empty.setVisibility(View.GONE);
  63 + fragment.binding.refreshLayout.setVisibility(View.VISIBLE);
  64 + }else {
  65 + showEmpty();
  66 + }
  67 +
  68 + if(partPeopleInfoBaseInfo.getData().getUserMsgs().size() < fragment.itemNum){
  69 + fragment.binding.refreshLayout.setEnableLoadMore(false);
  70 + }else {
  71 + fragment.binding.refreshLayout.setEnableLoadMore(true);
  72 + }
  73 + if(fragment.currentPage > 1){
  74 + list.addAll(partPeopleInfoBaseInfo.getData().getUserMsgs());
  75 + adapter.notifyDataSetChanged();
  76 + }
  77 + fragment.binding.refreshLayout.finishRefresh();
  78 + fragment.binding.refreshLayout.finishLoadMore();
41 79 }
42 80  
43 81 public void showErr(String msg){
  82 + fragment.binding.refreshLayout.finishRefresh();
  83 + fragment.binding.refreshLayout.finishLoadMore();
  84 + if (list.size() == 0) {
  85 + fragment.binding.empty.setVisibility(View.VISIBLE);
  86 + fragment.binding.refreshLayout.setVisibility(View.GONE);
  87 + fragment.binding.empty.setDetailText(fragment.getResources().getString(R.string.msg_failed_network_detail));
  88 + fragment.binding.empty.setTitleText(msg);
  89 + fragment.binding.empty.setButton("重试", new View.OnClickListener() {
  90 + @Override
  91 + public void onClick(View v) {
  92 + fragment.currentPage = 1;
  93 + fragment.getPresenter().setData(fragment.getActivity(),"116",fragment.currentPage,fragment.itemNum);
  94 + }
  95 + });
  96 + fragment.binding.empty.setLoadingShowing(false);
  97 + fragment.binding.empty.setImage(R.drawable.wufalianjie);
  98 + } else {
  99 + fragment.binding.empty.setVisibility(View.GONE);
  100 + fragment.binding.refreshLayout.setVisibility(View.VISIBLE);
  101 + showToast(msg);
  102 + }
  103 + }
44 104  
  105 +
  106 + public void showToast(String message) {
  107 + AlertUtil.showDeftToast(fragment.getActivity(), message);
45 108 }
  109 +
  110 + public void showEmpty(){
  111 + fragment.binding.empty.setVisibility(View.VISIBLE);
  112 + fragment.binding.refreshLayout.setVisibility(View.GONE);
  113 + fragment.binding.empty.show("还没有人参加哦", "", R.drawable.zhuangtai_kong);
  114 + }
  115 +
  116 +
  117 + public void showLoading() {
  118 + if (loadingDiaog != null) loadingDiaog.show();
  119 + }
  120 +
  121 + public void hideLoading() {
  122 + if (loadingDiaog != null) loadingDiaog.dismiss();
  123 + }
  124 +
46 125 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/activity/RunRaceDetailActivity.java
... ... @@ -37,6 +37,12 @@ import java.util.List;
37 37 public class RunRaceDetailActivity extends QMUIFragmentActivity {
38 38 private QMUIFragment fragment;
39 39  
  40 + public static void startActivity(Activity activity, String eventId) {
  41 + Intent intent = new Intent(activity, RunRaceDetailActivity.class);
  42 + intent.putExtra("eventId", eventId);
  43 + activity.startActivity(intent);
  44 + }
  45 +
40 46 @Override
41 47 protected int getContextViewId() {
42 48 return R.id.fragment_finish_run_map;
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/adapter/MyRecordAdapter.java
... ... @@ -17,6 +17,8 @@ import com.cnlive.moudle.pedometer.ui.activity.RaceRecordActivity;
17 17 import com.cnlive.moudle.pedometer.ui.activity.SelfRecordActivity;
18 18 import com.cnlive.moudle.pedometer.ui.fragment.SelfRecordFragment;
19 19 import com.cnlive.moudle.pedometer.ui.widget.FivePersonIconView;
  20 +import com.cnlive.moudle.pedometer.utils.TimeUtil;
  21 +import com.cnlive.strike.data.network.model.runAbout.RunLineInfo;
20 22 import com.example.moudle_pedometer.R;
21 23  
22 24 import java.util.ArrayList;
... ... @@ -26,7 +28,7 @@ import java.util.List;
26 28 */
27 29 public class MyRecordAdapter extends RecyclerView.Adapter<MyRecordAdapter.MyViewHolder> {
28 30  
29   - private List<String> list = new ArrayList<>();
  31 + private List<RunLineInfo.ListBean> list = new ArrayList<>();
30 32 private Activity context;
31 33 private boolean isShow;
32 34 private OnClickListener clickListener;
... ... @@ -35,7 +37,7 @@ public class MyRecordAdapter extends RecyclerView.Adapter&lt;MyRecordAdapter.MyView
35 37 this.clickListener = clickListener;
36 38 }
37 39  
38   - public MyRecordAdapter(List<String> list, Activity context,boolean isShow) {
  40 + public MyRecordAdapter(List<RunLineInfo.ListBean> list, Activity context, boolean isShow) {
39 41 this.list = list;
40 42 this.context = context;
41 43 this.isShow = isShow;
... ... @@ -55,13 +57,23 @@ public class MyRecordAdapter extends RecyclerView.Adapter&lt;MyRecordAdapter.MyView
55 57 myViewHolder.has_report.setVisibility(View.GONE);
56 58 }else {
57 59 myViewHolder.my_record_ry.setVisibility(View.GONE);
58   - myViewHolder.has_report.setVisibility(View.VISIBLE);
  60 + if(list.get(i).isSignResult()){
  61 + myViewHolder.has_report.setVisibility(View.VISIBLE);
  62 + }else {
  63 + myViewHolder.has_report.setVisibility(View.GONE);
  64 + }
59 65 }
60 66 myViewHolder.my_record.setOnClickListener(v -> SelfRecordActivity.newInstance(context));
61 67 // myViewHolder.check_raking.setOnClickListener(v -> );
62 68 if(clickListener != null){
63 69 myViewHolder.item_ly.setOnClickListener(v -> clickListener.onClickListener(list.get(i),i));
64 70 }
  71 +
  72 + myViewHolder.line_name.setText(list.get(i).getTitle());
  73 + myViewHolder.activity_time.setText(TimeUtil.getStampToTime(list.get(i).getStart_time(),"yyyy.MM.dd")+"——"+TimeUtil.getStampToTime(list.get(i).getEnd_time(),"yyyy.MM.dd"));
  74 + myViewHolder.line_address.setText(list.get(i).getAddress()+" "+list.get(i).getMileage());
  75 + myViewHolder.people_part.setText(list.get(i).getSignupNum()+"");
  76 + myViewHolder.join_person.initIconData(list.get(i).getFaceUrl());
65 77 }
66 78  
67 79  
... ... @@ -78,6 +90,10 @@ public class MyRecordAdapter extends RecyclerView.Adapter&lt;MyRecordAdapter.MyView
78 90 RelativeLayout item_ly;
79 91 RelativeLayout my_record_ry;
80 92 ImageView has_report;
  93 + TextView line_name;
  94 + TextView activity_time;
  95 + TextView line_address;
  96 + TextView people_part;
81 97  
82 98 public MyViewHolder(@NonNull View itemView) {
83 99 super(itemView);
... ... @@ -87,10 +103,14 @@ public class MyRecordAdapter extends RecyclerView.Adapter&lt;MyRecordAdapter.MyView
87 103 item_ly = itemView.findViewById(R.id.item_ly);
88 104 my_record_ry = itemView.findViewById(R.id.my_record_ry);
89 105 has_report = itemView.findViewById(R.id.has_report);
  106 + line_name = itemView.findViewById(R.id.line_name);
  107 + activity_time = itemView.findViewById(R.id.activity_time);
  108 + line_address = itemView.findViewById(R.id.line_address);
  109 + people_part = itemView.findViewById(R.id.people_part);
90 110 }
91 111 }
92 112  
93 113 public interface OnClickListener{
94   - void onClickListener(String msg,int position);
  114 + void onClickListener(RunLineInfo.ListBean msg,int position);
95 115 }
96 116 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/adapter/RaceRecordAdapter.java
... ... @@ -12,7 +12,7 @@ import android.widget.TextView;
12 12  
13 13  
14 14 import com.cnlive.moudle.pedometer.utils.TimeUtil;
15   -import com.cnlive.strike.data.network.model.RaceRecordInfo;
  15 +import com.cnlive.strike.data.network.model.runAbout.RaceRecordInfo;
16 16 import com.example.moudle_pedometer.R;
17 17  
18 18 import java.util.List;
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/adapter/TakePartAdapter.java
... ... @@ -9,11 +9,12 @@ import android.view.ViewGroup;
9 9 import android.widget.ImageView;
10 10 import android.widget.TextView;
11 11  
12   -import com.cnlive.strike.application.GlideApp;
13   -import com.cnlive.strike.data.network.model.TakePartPeopleInfo;
  12 +import com.bumptech.glide.Glide;
  13 +import com.bumptech.glide.load.resource.bitmap.CircleCrop;
  14 +import com.bumptech.glide.request.RequestOptions;
  15 +import com.cnlive.strike.data.network.model.runAbout.TakePartPeopleInfo;
14 16 import com.example.moudle_pedometer.R;
15 17  
16   -import java.time.temporal.Temporal;
17 18 import java.util.List;
18 19  
19 20 /**
... ... @@ -38,7 +39,8 @@ public class TakePartAdapter extends RecyclerView.Adapter&lt;TakePartAdapter.MyHold
38 39  
39 40 @Override
40 41 public void onBindViewHolder(@NonNull TakePartAdapter.MyHolder myViewHolder, int i) {
41   - GlideApp.with(context).load(list.get(i).getImage()).into(myViewHolder.icon_img);
  42 + Glide.with(context).load(list.get(i).getImage())
  43 + .apply(RequestOptions.bitmapTransform(new CircleCrop()).placeholder(R.drawable.ic_icon)).into(myViewHolder.icon_img);
42 44 myViewHolder.nickname.setText(list.get(i).getNickName());
43 45 }
44 46  
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/RunLineFragment.java
... ... @@ -12,11 +12,16 @@ import android.view.LayoutInflater;
12 12 import android.view.View;
13 13 import android.view.ViewGroup;
14 14  
  15 +import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
  16 +import com.cnlive.moudle.pedometer.frame.presenter.RunLinePresenter;
  17 +import com.cnlive.moudle.pedometer.frame.view.RunLineView;
15 18 import com.cnlive.moudle.pedometer.ui.activity.MyRecordActivity;
16 19 import com.cnlive.moudle.pedometer.ui.activity.RunRaceDetailActivity;
17 20 import com.cnlive.moudle.pedometer.ui.adapter.MyRecordAdapter;
18 21 import com.example.moudle_pedometer.R;
19 22 import com.example.moudle_pedometer.databinding.FragmentRunLineBinding;
  23 +import com.scwang.smartrefresh.layout.footer.ClassicsFooter;
  24 +import com.scwang.smartrefresh.layout.header.ClassicsHeader;
20 25  
21 26 import java.util.ArrayList;
22 27 import java.util.List;
... ... @@ -24,43 +29,33 @@ import java.util.List;
24 29 /**
25 30 * Created by hanyayun 019/06/03.
26 31 */
27   -public class RunLineFragment extends Fragment {
  32 +public class RunLineFragment extends MvpBindingFragment<RunLineView, RunLinePresenter,Object,FragmentRunLineBinding> {
28 33  
29   - private FragmentRunLineBinding binding;
30 34  
  35 + public int currentPage = 1;
  36 + public int pageSize = 10;
31 37 public RunLineFragment() {
32 38 // Required empty public constructor
33 39 }
34 40  
35   -
36 41 @Override
37   - public View onCreateView(LayoutInflater inflater, ViewGroup container,
38   - Bundle savedInstanceState) {
39   - // Inflate the layout for this fragment
40   - binding = DataBindingUtil.inflate(inflater,R.layout.fragment_run_line, container, false);
41   - return binding.getRoot();
  42 + protected int getLayoutId() {
  43 + return R.layout.fragment_run_line;
42 44 }
43 45  
44 46 @Override
45 47 public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
46 48 super.onViewCreated(view, savedInstanceState);
  49 + if(getMvpView() != null)getMvpView().initView();
  50 + getPresenter().setData(getActivity(),"10514343",currentPage,pageSize);
47 51  
48   - binding.backBtn.setOnClickListener(v -> getActivity().finish());
49   - binding.myActivity.setOnClickListener(v -> MyRecordActivity.newInstance(getActivity()));
50   - List<String> list = new ArrayList<>();
51   - list.add("fff");
52   - list.add("fff");
53   - list.add("fff");
54   - list.add("fff");
55   - binding.runLineRecy.setLayoutManager(new LinearLayoutManager(getActivity()));
56   - MyRecordAdapter myRecordAdapter = new MyRecordAdapter(list,getActivity(),false);
57   - binding.runLineRecy.setAdapter(myRecordAdapter);
58   - myRecordAdapter.setClickListener(new MyRecordAdapter.OnClickListener() {
59   - @Override
60   - public void onClickListener(String msg, int position) {
61   - Intent intent = new Intent(getActivity(), RunRaceDetailActivity.class);
62   - getActivity().startActivity(intent);
63   - }
  52 + binding.refreshLayout.setOnRefreshListener(v ->{
  53 + currentPage = 1;
  54 + getPresenter().setData(getActivity(),"10514343",currentPage,pageSize);
  55 + });
  56 + binding.refreshLayout.setOnLoadMoreListener(v ->{
  57 + currentPage++;
  58 + getPresenter().setData(getActivity(),"10514343",currentPage,pageSize);
64 59 });
65 60 }
66 61 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/ui/fragment/TakePartFragment.java
... ... @@ -3,10 +3,7 @@ package com.cnlive.moudle.pedometer.ui.fragment;
3 3  
4 4 import android.os.Bundle;
5 5 import android.support.annotation.Nullable;
6   -import android.support.v4.app.Fragment;
7   -import android.view.LayoutInflater;
8 6 import android.view.View;
9   -import android.view.ViewGroup;
10 7  
11 8 import com.cnlive.libs.base.frame.fragment.MvpBindingFragment;
12 9 import com.cnlive.moudle.pedometer.frame.presenter.TakePartPresenter;
... ... @@ -19,6 +16,8 @@ import com.example.moudle_pedometer.databinding.FragmentTakePartBinding;
19 16 */
20 17 public class TakePartFragment extends MvpBindingFragment<TakePartView, TakePartPresenter,Object, FragmentTakePartBinding> {
21 18  
  19 + public int currentPage = 1;
  20 + public int itemNum = 10;
22 21  
23 22 public TakePartFragment() {
24 23 // Required empty public constructor
... ... @@ -32,7 +31,15 @@ public class TakePartFragment extends MvpBindingFragment&lt;TakePartView, TakePartP
32 31 @Override
33 32 public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
34 33 super.onViewCreated(view, savedInstanceState);
35   - getPresenter().setData(getActivity(),"116",0,10);
  34 + getPresenter().setData(getActivity(),"116",currentPage,itemNum);
36 35 if(getMvpView() != null)getMvpView().initView();
  36 + binding.refreshLayout.setOnRefreshListener(v ->{
  37 + currentPage = 1;
  38 + getPresenter().setData(getActivity(),"116",currentPage,itemNum);
  39 + });
  40 + binding.refreshLayout.setOnLoadMoreListener(v ->{
  41 + currentPage++;
  42 + getPresenter().setData(getActivity(),"116",currentPage,itemNum);
  43 + });
37 44 }
38 45 }
... ...
moudle_pedometer/src/main/java/com/cnlive/moudle/pedometer/utils/TimeUtil.java
... ... @@ -73,12 +73,9 @@ public class TimeUtil {
73 73 * @return 格式化后的日期
74 74 */
75 75 public static String getStampToTime(long time,String pattern) {
76   - String res;
77   - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pattern);//"yyyy-MM-dd HH:mm:ss"
78   - long lt = new Long(time * 1000);
79   - Date date = new Date(lt);
80   - res = simpleDateFormat.format(date);
81   - return res;
  76 + SimpleDateFormat sdf = new SimpleDateFormat(pattern);
  77 + Date date = new Date(time);
  78 + return sdf.format(date);
82 79 }
83 80  
84 81 /**
... ...
moudle_pedometer/src/main/res/layout/fragment_run_line.xml
... ... @@ -14,51 +14,54 @@
14 14 android:id="@+id/back_btn"
15 15 android:layout_width="wrap_content"
16 16 android:layout_height="wrap_content"
17   - android:src="@drawable/top_back_black"
18 17 android:layout_centerVertical="true"
19 18 android:padding="10dp"
20   - />
  19 + android:src="@drawable/top_back_black" />
21 20  
22 21 <TextView
23 22 android:id="@+id/beijing"
24 23 android:layout_width="wrap_content"
25 24 android:layout_height="wrap_content"
26   - android:layout_toRightOf="@id/back_btn"
27   - android:text="@string/beijing"
28   - android:layout_marginLeft="10dp"
29 25 android:layout_centerVertical="true"
  26 + android:layout_marginLeft="10dp"
  27 + android:layout_toRightOf="@id/back_btn"
30 28 android:drawableRight="@drawable/sport_dropdown"
31 29 android:drawablePadding="7dp"
32   - android:textSize="15sp"
  30 + android:text="@string/beijing"
33 31 android:textColor="#333333"
34   - />
  32 + android:textSize="15sp" />
35 33  
36 34 <TextView
37 35 android:layout_width="wrap_content"
38 36 android:layout_height="wrap_content"
  37 + android:layout_centerInParent="true"
39 38 android:text="@string/goline"
40   - android:textSize="18sp"
41 39 android:textColor="#333333"
42   - android:layout_centerInParent="true"
43   - />
  40 + android:textSize="18sp" />
44 41  
45 42 <TextView
46 43 android:id="@+id/my_activity"
47 44 android:layout_width="wrap_content"
48 45 android:layout_height="wrap_content"
49   - android:layout_centerVertical="true"
50 46 android:layout_alignParentRight="true"
  47 + android:layout_centerVertical="true"
51 48 android:padding="10dp"
52 49 android:text="@string/myactivity"
53   - android:textSize="15sp"
54 50 android:textColor="#333333"
55   - />
  51 + android:textSize="15sp" />
56 52 </RelativeLayout>
57 53  
58   - <android.support.v7.widget.RecyclerView
59   - android:id="@+id/run_line_recy"
  54 + <com.scwang.smartrefresh.layout.SmartRefreshLayout
  55 + android:id="@+id/refreshLayout"
60 56 android:layout_width="match_parent"
61   - android:layout_height="match_parent" />
  57 + android:layout_height="match_parent">
  58 +
  59 + <android.support.v7.widget.RecyclerView
  60 + android:id="@+id/run_line_recy"
  61 + android:layout_width="match_parent"
  62 + android:layout_height="match_parent" />
  63 + </com.scwang.smartrefresh.layout.SmartRefreshLayout>
  64 +
62 65  
63 66 <com.cnlive.strike.ui.widget.UIEmptyView
64 67 android:id="@+id/empty"
... ...
moudle_pedometer/src/main/res/layout/item_my_record.xml
... ... @@ -19,7 +19,6 @@
19 19 android:id="@+id/line_name"
20 20 android:layout_width="wrap_content"
21 21 android:layout_height="wrap_content"
22   - android:text="首都师范大学田径场"
23 22 android:textColor="#333333"
24 23 android:textSize="18sp" />
25 24  
... ... @@ -38,6 +37,7 @@
38 37 android:textSize="12sp" />
39 38  
40 39 <TextView
  40 + android:id="@+id/activity_time"
41 41 android:layout_width="wrap_content"
42 42 android:layout_height="wrap_content"
43 43 android:layout_marginLeft="10dp"
... ... @@ -61,6 +61,7 @@
61 61 android:textSize="12sp" />
62 62  
63 63 <TextView
  64 + android:id="@+id/line_address"
64 65 android:layout_width="wrap_content"
65 66 android:layout_height="wrap_content"
66 67 android:layout_marginLeft="10dp"
... ... @@ -88,7 +89,6 @@
88 89 android:layout_height="wrap_content"
89 90 android:layout_gravity="center"
90 91 android:layout_marginLeft="10dp"
91   - android:text="@string/_123"
92 92 android:textColor="#333333"
93 93 android:textSize="15sp" />
94 94  
... ...