Commit c9b7fb7e authored by linfeng's avatar linfeng

旅游下单、底图适配等优化

parent 0e1f197a
...@@ -116,7 +116,13 @@ ...@@ -116,7 +116,13 @@
<category android:name="android.intent.category.LAUNCHER" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter> </intent-filter>
</activity> <!-- 百度地图相关 --> </activity>
<!--region 适配全面屏-->
<meta-data
android:name="android.max_aspect"
android:value="2.4" />
<!-- 百度地图相关 -->
<!-- 声明service组件 --> <!-- 声明service组件 -->
<service <service
android:name="com.baidu.location.f" android:name="com.baidu.location.f"
......
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android"> <layer-list xmlns:android="http://schemas.android.com/apk/res/android"
android:opacity="opaque">
<item> <item>
<shape> <shape>
<solid android:color="@color/colorWrite" /> <solid android:color="@color/colorWrite" />
...@@ -7,8 +8,7 @@ ...@@ -7,8 +8,7 @@
</item> </item>
<item> <item>
<bitmap <bitmap
android:gravity="bottom" android:gravity="bottom|center_horizontal"
android:scaleType="matrix"
android:src="@drawable/bottom_backgroud2" android:src="@drawable/bottom_backgroud2"
android:tileMode="disabled" /> android:tileMode="disabled" />
</item> </item>
......
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--<item name="android:windowBackground">@drawable/start_back_icon</item>-->
<!--<item name="windowNoTitle">true</item>-->
<!--<item name="windowActionBar">true</item>-->
<!--<item name="android:windowContentOverlay">@null</item>-->
<!--<item name="android:windowNoTitle">true</item>-->
<!--&lt;!&ndash; 设置全屏 &ndash;&gt;-->
<!--<item name="android:windowFullscreen">true</item>-->
<item name="android:windowTranslucentNavigation">true</item>
<item name="android:windowTranslucentStatus">true</item>
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/start_back_icon</item>
</style>
</resources>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<resources>
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<!--<item name="android:windowBackground">@drawable/start_back_icon</item>-->
<!--<item name="windowNoTitle">true</item>-->
<!--<item name="windowActionBar">true</item>-->
<!--<item name="android:windowContentOverlay">@null</item>-->
<!--<item name="android:windowNoTitle">true</item>-->
<!--&lt;!&ndash; 设置全屏 &ndash;&gt;-->
<!--<item name="android:windowFullscreen">true</item>-->
<item name="android:navigationBarColor">@android:color/transparent</item>
<item name="android:statusBarColor">@android:color/transparent</item>
<!--windowTranslucentNavigation这个属性设置成true,则navigationBarColor设置会失效-->
<!--<item name="android:windowTranslucentNavigation">true</item>-->
<!--<item name="android:windowTranslucentStatus">true</item>-->
<item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/start_back_icon</item>
</style>
</resources>
\ No newline at end of file
...@@ -10,15 +10,23 @@ ...@@ -10,15 +10,23 @@
<!-- 给Theme设置backgroud,解决启动黑屏问题,不过这样的启动速度好像变得更慢了一些--> <!-- 给Theme设置backgroud,解决启动黑屏问题,不过这样的启动速度好像变得更慢了一些-->
<style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar"> <style name="SplashTheme" parent="Theme.AppCompat.Light.NoActionBar">
<item name="android:windowBackground">@drawable/start_back_icon</item> <!--<item name="android:windowBackground">@drawable/start_back_icon</item>-->
<item name="windowNoTitle">true</item> <!--<item name="windowNoTitle">true</item>-->
<item name="windowActionBar">true</item> <!--<item name="windowActionBar">true</item>-->
<item name="android:windowContentOverlay">@null</item> <!--<item name="android:windowContentOverlay">@null</item>-->
<item name="android:windowNoTitle">true</item> <!--<item name="android:windowNoTitle">true</item>-->
<!-- 设置全屏 --> <!--&lt;!&ndash; 设置全屏 &ndash;&gt;-->
<!--<item name="android:windowFullscreen">true</item>-->
<!--<item name="android:navigationBarColor">@android:color/transparent</item>-->
<!--<item name="android:statusBarColor">@android:color/transparent</item>-->
<!--windowTranslucentNavigation这个属性设置成true,则navigationBarColor设置会失效-->
<!--<item name="android:windowTranslucentNavigation">true</item>-->
<!--<item name="android:windowTranslucentStatus">true</item>-->
<item name="android:windowFullscreen">true</item> <item name="android:windowFullscreen">true</item>
<item name="android:windowBackground">@drawable/start_back_icon</item>
</style> </style>
</resources> </resources>
...@@ -2,6 +2,7 @@ package com.rv.rvmine.traveler; ...@@ -2,6 +2,7 @@ package com.rv.rvmine.traveler;
import android.content.Context; import android.content.Context;
import android.content.Intent; import android.content.Intent;
import android.net.Uri;
import android.os.Bundle; import android.os.Bundle;
import android.view.View; import android.view.View;
...@@ -42,15 +43,20 @@ public class AboutUsActivity extends BaseStatusActivity<CommonPresenter> { ...@@ -42,15 +43,20 @@ public class AboutUsActivity extends BaseStatusActivity<CommonPresenter> {
} }
@OnClick({R2.id.rl_item_privacy_policy}) @OnClick({R2.id.rl_item_privacy_policy, R2.id.rl_item_customer_service})
public void onViewClicked(View view) { public void onViewClicked(View view) {
int id = view.getId(); int id = view.getId();
if (id == R.id.rl_item_privacy_policy){ if (id == R.id.rl_item_privacy_policy) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW) ARouter.getInstance().build(Constance.ACTIVITY_URL_WEBVIEW)
.withString("title", "隐私政策") .withString("title", "隐私政策")
.withString("url", ApiConfig.HTTP_URL_CAR_TYPE_NOTICE) .withString("url", ApiConfig.HTTP_URL_CAR_TYPE_NOTICE)
.withInt("type", 19) .withInt("type", 19)
.navigation(); .navigation();
} else if (id == R.id.rl_item_customer_service) {
Intent intent = new Intent(Intent.ACTION_DIAL);
Uri uri = Uri.parse("tel:" + "4000369369");
intent.setData(uri);
startActivity(intent);
} }
} }
} }
...@@ -615,9 +615,11 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen ...@@ -615,9 +615,11 @@ public class PersonalInformationActivity extends BaseStatusActivity<PickerPresen
.setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示 .setType(new boolean[]{true, true, true, false, false, false}) //年月日时分秒 的显示与否,不设置则默认全部显示
.setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒 .setLabel("年", "月", "日", "", "", "")//默认设置为年月日时分秒
.isCenterLabel(false) .isCenterLabel(false)
.setDividerColor(Color.RED) .setSubmitColor(getResources().getColor(R.color.colorMain))
.setTextColorCenter(Color.RED)//设置选中项的颜色 .setCancelColor(getResources().getColor(R.color.colorMain))
.setTextColorOut(Color.BLUE)//设置没有被选中项的颜色 .setDividerColor(getResources().getColor(R.color.gray_FFB74B))
.setTextColorCenter(getResources().getColor(R.color.colorMain))//设置选中项的颜色
.setTextColorOut(getResources().getColor(R.color.colorGray))//设置没有被选中项的颜色
.setContentSize(21) .setContentSize(21)
.setDate(selectedDate) .setDate(selectedDate)
.setLineSpacingMultiplier(1.2f) .setLineSpacingMultiplier(1.2f)
......
...@@ -41,6 +41,7 @@ ...@@ -41,6 +41,7 @@
android:paddingRight="@dimen/size_15"> android:paddingRight="@dimen/size_15">
<RelativeLayout <RelativeLayout
android:id="@+id/rl_item_customer_service"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_50"> android:layout_height="@dimen/size_50">
......
...@@ -44,7 +44,7 @@ ...@@ -44,7 +44,7 @@
android:id="@+id/tv_ok" android:id="@+id/tv_ok"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="@dimen/size_50" android:layout_height="@dimen/size_50"
android:background="@color/colorYellow" android:background="@color/gray_FFB74B"
android:gravity="center" android:gravity="center"
android:text="确认" /> android:text="确认" />
......
package com.rv.tourism.adapter;
import android.widget.ImageView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.ruiwenliu.wrapper.util.glide.GlideManager;
import com.rv.tourism.R;
import com.rv.tourism.bean.BeanPopularBrigade;
import com.rv.tourism.bean.BeanTourDetailData;
/**
* 选择出发城市
*/
public class TravelBookingDepartureAdapter extends BaseQuickAdapter<BeanTourDetailData.DataBeanX.TourDepartVo, BaseViewHolder> {
private int selectPosition;
public TravelBookingDepartureAdapter() {
super(R.layout.rv_item_travel_booking_departure);
}
@Override
protected void convert(BaseViewHolder helper, BeanTourDetailData.DataBeanX.TourDepartVo item) {
helper.setText(R.id.tv_company, item.getName());
helper.setText(R.id.tv_address, item.getAddress());
if (selectPosition == mData.indexOf(item)) {
helper.getView(R.id.iv_company_select).setSelected(true);
} else {
helper.getView(R.id.iv_company_select).setSelected(false);
}
}
public void setSelectPosition(int position) {
this.selectPosition = position;
notifyDataSetChanged();
}
}
package com.rv.tourism.adapter;
import android.support.v4.content.ContextCompat;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.rv.tourism.R;
import com.rv.tourism.bean.BeanPopularBrigade;
import com.rv.tourism.bean.BeanTourDetailData;
/**
* 选择出发时间
*/
public class TravelBookingDeparturetimeAdapter extends BaseQuickAdapter<BeanTourDetailData.DataBeanX.TourDepartTimeVo, BaseViewHolder> {
private int selectPosition;
public TravelBookingDeparturetimeAdapter() {
super(R.layout.rv_item_travel_booking_departure_time);
}
@Override
protected void convert(BaseViewHolder helper, BeanTourDetailData.DataBeanX.TourDepartTimeVo item) {
String time = item.getStartTime() + getWeek(item.getStartWeek()) + "~" + item.getEndTime() + getWeek(item.getEndWeek());
helper.setText(R.id.tv_time, time);
if ("0".equals(item.getOverdue())) {
if (selectPosition == mData.indexOf(item)) {
helper.getView(R.id.iv_time_select).setSelected(true);
} else {
helper.getView(R.id.iv_time_select).setSelected(false);
}
helper.setTextColor(R.id.tv_time, ContextCompat.getColor(mContext, R.color.colorMain));
} else {
helper.setTextColor(R.id.tv_time, ContextCompat.getColor(mContext, R.color.textGray));
}
}
public void setSelectPosition(int position) {
this.selectPosition = position;
notifyDataSetChanged();
}
public String getWeek(int no) {
String week = "";
switch (no) {
case 0:
week = "周日";
break;
case 1:
week = "周一";
break;
case 2:
week = "周二";
break;
case 3:
week = "周三";
break;
case 4:
week = "周四";
break;
case 5:
week = "周五";
break;
case 6:
week = "周六";
break;
}
return week;
}
}
...@@ -37,5 +37,7 @@ public interface TourismApi extends RvFrameConfig { ...@@ -37,5 +37,7 @@ public interface TourismApi extends RvFrameConfig {
String TOUR_DETAIL = HOST + "/api/tour/tourGood/app/unauth/usable/%s"; // 旅游详情 String TOUR_DETAIL = HOST + "/api/tour/tourGood/app/unauth/usable/%s"; // 旅游详情
String TOUR_UNAUTH_DETAILS = HOST + "/api/tour/good/app/unauth/details"; // 商品旅游详情数据
} }
package com.rv.tourism.bean;
import com.ruiwenliu.wrapper.base.BaseBean;
import java.util.ArrayList;
import java.util.List;
public class BeanTourDetailData extends BaseBean {
private boolean rel;
private DataBeanX data;
public boolean isRel() {
return rel;
}
public void setRel(boolean rel) {
this.rel = rel;
}
public DataBeanX getData() {
return data;
}
public void setData(DataBeanX data) {
this.data = data;
}
public static class DataBeanX {
private String id;
private String name;
private String cover;
private double stock;
private double price;
private double childPrice;
private List<TourDepartTimeVo> tourDepartTimeVo;
private List<TourDepartVo> tourDepartVo;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCover() {
return cover;
}
public void setCover(String cover) {
this.cover = cover;
}
public double getPrice() {
return price;
}
public void setPrice(double price) {
this.price = price;
}
public double getChildPrice() {
return childPrice;
}
public void setChildPrice(double childPrice) {
this.childPrice = childPrice;
}
public List<TourDepartTimeVo> getTourDepartTimeVo() {
return tourDepartTimeVo;
}
public void setTourDepartTimeVo(List<TourDepartTimeVo> tourDepartTimeVo) {
this.tourDepartTimeVo = tourDepartTimeVo;
}
public List<TourDepartVo> getTourDepartVo() {
return tourDepartVo;
}
public void setTourDepartVo(List<TourDepartVo> tourDepartVo) {
this.tourDepartVo = tourDepartVo;
}
public double getStock() {
return stock;
}
public void setStock(double stock) {
this.stock = stock;
}
public List<TourDepartVo> getDeparture() {
ArrayList<TourDepartVo> list = new ArrayList<>();
if (tourDepartVo != null) {
for (int i = 0; i < tourDepartVo.size(); i++) {
if ("0".equals(tourDepartVo.get(i).getType())) {
list.add(tourDepartVo.get(i));
}
}
}
return list;
}
public List<TourDepartVo> getEndDeparture() {
ArrayList<TourDepartVo> list = new ArrayList<>();
if (tourDepartVo != null) {
for (int i = 0; i < tourDepartVo.size(); i++) {
if ("2".equals(tourDepartVo.get(i).getType())) {
list.add(tourDepartVo.get(i));
}
}
}
return list;
}
public static class TourDepartTimeVo {
private String id;//": 300,
private String goodId;//": 102,
private String startTime;//": "2019-08-20",
private String endTime;//": "2019-08-21",
private int startWeek;//": 2,
private int endWeek;//": 3,
private String speId;//": "0",
private String price;//": 0.02,
private String childPrice;//": 0.01,
private String stock;//": 0,
private String overdue;//": 1
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGoodId() {
return goodId;
}
public void setGoodId(String goodId) {
this.goodId = goodId;
}
public String getStartTime() {
return startTime;
}
public void setStartTime(String startTime) {
this.startTime = startTime;
}
public String getEndTime() {
return endTime;
}
public void setEndTime(String endTime) {
this.endTime = endTime;
}
public int getStartWeek() {
return startWeek;
}
public void setStartWeek(int startWeek) {
this.startWeek = startWeek;
}
public int getEndWeek() {
return endWeek;
}
public void setEndWeek(int endWeek) {
this.endWeek = endWeek;
}
public String getSpeId() {
return speId;
}
public void setSpeId(String speId) {
this.speId = speId;
}
public String getPrice() {
return price;
}
public void setPrice(String price) {
this.price = price;
}
public String getChildPrice() {
return childPrice;
}
public void setChildPrice(String childPrice) {
this.childPrice = childPrice;
}
public String getStock() {
return stock;
}
public void setStock(String stock) {
this.stock = stock;
}
public String getOverdue() {
return overdue;
}
public void setOverdue(String overdue) {
this.overdue = overdue;
}
}
public static class TourDepartVo {
private String id;//": 742,
private String goodId;//": 102,
private String name;//": "欣新房车控股集团",
private String address;//": "松山湖",
private String companyId;//": "1",
private String province;//": 440000,
private String provinceName;//": "广东省",
private String city;//": 441900,
private String cityName;//": "东莞市",
private String departTime;//": 30600,
private String longitude;//": 113.9069685,
private String latitude;//": 23.0056826,
private String type;//": 0,
private String rank;//": 0
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getGoodId() {
return goodId;
}
public void setGoodId(String goodId) {
this.goodId = goodId;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public String getCompanyId() {
return companyId;
}
public void setCompanyId(String companyId) {
this.companyId = companyId;
}
public String getProvince() {
return province;
}
public void setProvince(String province) {
this.province = province;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getCityName() {
return cityName;
}
public void setCityName(String cityName) {
this.cityName = cityName;
}
public String getDepartTime() {
return departTime;
}
public void setDepartTime(String departTime) {
this.departTime = departTime;
}
public String getLongitude() {
return longitude;
}
public void setLongitude(String longitude) {
this.longitude = longitude;
}
public String getLatitude() {
return latitude;
}
public void setLatitude(String latitude) {
this.latitude = latitude;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getRank() {
return rank;
}
public void setRank(String rank) {
this.rank = rank;
}
}
}
}
package com.rv.tourism.dialog;
import android.content.Context;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.Gravity;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.ruiwenliu.wrapper.dialog.BaseDialog;
import com.ruiwenliu.wrapper.util.ViewHolder;
import com.rv.component.utils.DisplayUtil;
import com.rv.tourism.R;
import com.rv.tourism.adapter.TravelBookingDepartureAdapter;
import com.rv.tourism.adapter.TravelBookingDeparturetimeAdapter;
import com.rv.tourism.bean.BeanOrderParam;
import com.rv.tourism.bean.BeanTourDetailData;
import java.util.List;
/**
* 旅游预定弹框
*/
public class TravelBookingDialog extends BaseDialog {
private TravelBookingDepartureAdapter mAdapter;
private TravelBookingDeparturetimeAdapter mTimeAdapter;
private int adufe = 1;
private int chile = 0;
private TextView adultPrice;
private TextView childPrice;
private OnOKClickListener listener;
private BeanTourDetailData.DataBeanX.TourDepartTimeVo tourDepartTimeVo;
private BeanTourDetailData.DataBeanX.TourDepartVo tourDepartVo;
private BeanTourDetailData.DataBeanX bean;
public TravelBookingDialog(@NonNull Context context) {
super(context);
setDialogParams(ViewGroup.LayoutParams.MATCH_PARENT, DisplayUtil.dip2px(context, 450), Gravity.BOTTOM);
}
@Override
public void helper(ViewHolder helper) {
super.helper(helper);
RecyclerView rcDeparturetime = helper.getView(R.id.rc_departuretime);
RecyclerView rcDeparture = helper.getView(R.id.rc_departure);
adultPrice = helper.getView(R.id.tv_adult_price);
childPrice = helper.getView(R.id.tv_child_price);
mAdapter = new TravelBookingDepartureAdapter();
rcDeparture.setLayoutManager(new LinearLayoutManager(getDialogContext()));
rcDeparture.setNestedScrollingEnabled(false);
rcDeparture.setAdapter(mAdapter);
mTimeAdapter = new TravelBookingDeparturetimeAdapter();
rcDeparturetime.setLayoutManager(new LinearLayoutManager(getDialogContext()));
rcDeparturetime.setNestedScrollingEnabled(false);
rcDeparturetime.setAdapter(mTimeAdapter);
mAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapters, View view, int position) {
tourDepartVo = (BeanTourDetailData.DataBeanX.TourDepartVo) adapters.getItem(position);
mAdapter.setSelectPosition(position);
}
});
mTimeAdapter.setOnItemClickListener(new BaseQuickAdapter.OnItemClickListener() {
@Override
public void onItemClick(BaseQuickAdapter adapter, View view, int position) {
BeanTourDetailData.DataBeanX.TourDepartTimeVo item = (BeanTourDetailData.DataBeanX.TourDepartTimeVo) adapter.getItem(position);
if ("0".equals(item.getOverdue())) {
tourDepartTimeVo = item;
mTimeAdapter.setSelectPosition(position);
}
}
});
initOnclick(helper);
}
private void initOnclick(final ViewHolder helper) {
helper.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
int id = v.getId();
if (id == R.id.iv_close) {
dismiss();
} else if (id == R.id.tv_item_booking_adult_less) {
if (adufe > 0) {
adufe--;
helper.setText(R.id.tv_booking_adult, String.valueOf(adufe));
}
} else if (id == R.id.tv_item_booking_adult_add) {
adufe++;
helper.setText(R.id.tv_booking_adult, String.valueOf(adufe));
} else if (id == R.id.tv_item_booking_child_less) {
if (chile > 0) {
chile--;
helper.setText(R.id.tv_booking_child, String.valueOf(chile));
}
} else if (id == R.id.tv_item_booking_child_add) {
chile++;
helper.setText(R.id.tv_booking_child, String.valueOf(chile));
} else if (id == R.id.tv_travel_booking_ok) {
if (adufe < chile) {
Toast.makeText(getContext(), "成人出游人数要大于或等于儿童出游人数", Toast.LENGTH_SHORT).show();
return;
}
if (adufe == 0) {
Toast.makeText(getContext(), "成人出游人数不能为空!", Toast.LENGTH_SHORT).show();
return;
}
List<BeanTourDetailData.DataBeanX.TourDepartVo> endDeparture = bean.getEndDeparture();
if (listener != null && bean != null && endDeparture != null && tourDepartTimeVo != null && tourDepartVo != null) {
BeanOrderParam beanOrderParam = new BeanOrderParam();
beanOrderParam.setEndTime(tourDepartTimeVo.getEndTime());
beanOrderParam.setGoodId(bean.getId());
beanOrderParam.setPrice(bean.getPrice());
beanOrderParam.setChildPrice(bean.getChildPrice());
beanOrderParam.setSpePriceId(tourDepartTimeVo.getId());
beanOrderParam.setAdultNum(String.valueOf(adufe));
beanOrderParam.setChildNum(String.valueOf(chile));
String time = tourDepartTimeVo.getStartTime() + getWeek(tourDepartTimeVo.getStartWeek()) + "~" + tourDepartTimeVo.getEndTime() + getWeek(tourDepartTimeVo.getEndWeek());
beanOrderParam.setTime(time);
beanOrderParam.setEndAddr(endDeparture.get(0).getAddress());
beanOrderParam.setStartAddr(tourDepartVo.getProvinceName() + tourDepartVo.getCityName() + tourDepartVo.getAddress());
beanOrderParam.setStartTime(tourDepartTimeVo.getStartTime());
beanOrderParam.setStartCompanyId(tourDepartVo.getCompanyId());
beanOrderParam.setStartCompanyName(tourDepartVo.getName());
beanOrderParam.setSiteId(tourDepartVo.getId());
listener.onClickData(beanOrderParam);
}
dismiss();
}
}
}, R.id.iv_close, R.id.tv_item_booking_adult_less, R.id.tv_item_booking_adult_add, R.id.tv_item_booking_child_less, R.id.tv_item_booking_child_add, R.id.tv_travel_booking_ok);
}
public void setNewData(BeanTourDetailData.DataBeanX bean) {
this.bean = bean;
if (mAdapter != null && mTimeAdapter != null && bean != null) {
mAdapter.setNewData(bean.getDeparture());
mTimeAdapter.setNewData(bean.getTourDepartTimeVo());
}
if (adultPrice != null && childPrice != null && bean != null) {
adultPrice.setText("成人:¥" + bean.getPrice() + "/人");
childPrice.setText("儿童:¥" + bean.getChildPrice() + "/人");
}
if (bean != null && bean.getDeparture() != null && bean.getDeparture().size() > 0) {
tourDepartVo = bean.getDeparture().get(0);
}
if (bean != null && bean.getTourDepartTimeVo() != null && bean.getTourDepartTimeVo().size() > 0) {
for (int i = 0; i < bean.getTourDepartTimeVo().size(); i++) {
if ("0".equals(bean.getTourDepartTimeVo().get(i).getOverdue())) {
tourDepartTimeVo = bean.getTourDepartTimeVo().get(i);
mTimeAdapter.setSelectPosition(i);
break;
}
}
}
}
@Override
public int getViewLayout() {
return R.layout.dialog_travel_booking;
}
public void setOnDayClickListener(OnOKClickListener listener) {
this.listener = listener;
}
public interface OnOKClickListener {
void onClickData(BeanOrderParam data);
}
public String getWeek(int no) {
String week = "";
switch (no) {
case 0:
week = "周日";
break;
case 1:
week = "周一";
break;
case 2:
week = "周二";
break;
case 3:
week = "周三";
break;
case 4:
week = "周四";
break;
case 5:
week = "周五";
break;
case 6:
week = "周六";
break;
}
return week;
}
}
...@@ -21,6 +21,7 @@ import com.alibaba.android.arouter.facade.annotation.Autowired; ...@@ -21,6 +21,7 @@ import com.alibaba.android.arouter.facade.annotation.Autowired;
import com.alibaba.android.arouter.facade.annotation.Route; import com.alibaba.android.arouter.facade.annotation.Route;
import com.alibaba.android.arouter.launcher.ARouter; import com.alibaba.android.arouter.launcher.ARouter;
import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSON;
import com.baidu.mapapi.model.LatLng;
import com.base.utils.ui.datetime.selector.util.TextUtil; import com.base.utils.ui.datetime.selector.util.TextUtil;
import com.frame.base.bus.IDCardCertificationEvent; import com.frame.base.bus.IDCardCertificationEvent;
import com.frame.base.bus.Observer; import com.frame.base.bus.Observer;
...@@ -34,17 +35,23 @@ import com.ruiwenliu.wrapper.SPConstance; ...@@ -34,17 +35,23 @@ import com.ruiwenliu.wrapper.SPConstance;
import com.ruiwenliu.wrapper.base.BaseBean; import com.ruiwenliu.wrapper.base.BaseBean;
import com.ruiwenliu.wrapper.base.BaseStatusActivity; import com.ruiwenliu.wrapper.base.BaseStatusActivity;
import com.ruiwenliu.wrapper.bean.BeanUserInfo; import com.ruiwenliu.wrapper.bean.BeanUserInfo;
import com.ruiwenliu.wrapper.util.MapUtil;
import com.ruiwenliu.wrapper.util.ViewHolder;
import com.ruiwenliu.wrapper.util.um.CustomShareListener; import com.ruiwenliu.wrapper.util.um.CustomShareListener;
import com.ruiwenliu.wrapper.util.um.ShareManager; import com.ruiwenliu.wrapper.util.um.ShareManager;
import com.ruiwenliu.wrapper.weight.TitleView; import com.ruiwenliu.wrapper.weight.TitleView;
import com.rv.component.dialog.BottomPromptDialog;
import com.rv.component.utils.Cookie; import com.rv.component.utils.Cookie;
import com.rv.component.utils.IsAppInstall; import com.rv.component.utils.IsAppInstall;
import com.rv.component.utils.LocationRecord;
import com.rv.tourism.R; import com.rv.tourism.R;
import com.rv.tourism.R2; import com.rv.tourism.R2;
import com.rv.tourism.api.TourismApi; import com.rv.tourism.api.TourismApi;
import com.rv.tourism.bean.BeanOrderParam; import com.rv.tourism.bean.BeanOrderParam;
import com.rv.tourism.bean.BeanTourDetail; import com.rv.tourism.bean.BeanTourDetail;
import com.rv.tourism.bean.BeanTourDetailData;
import com.rv.tourism.bean.BeanTourismCollection; import com.rv.tourism.bean.BeanTourismCollection;
import com.rv.tourism.dialog.TravelBookingDialog;
import com.rv.tourism.presenter.TourismPresenter; import com.rv.tourism.presenter.TourismPresenter;
import com.tencent.smtt.export.external.interfaces.WebResourceRequest; import com.tencent.smtt.export.external.interfaces.WebResourceRequest;
import com.tencent.smtt.sdk.WebChromeClient; import com.tencent.smtt.sdk.WebChromeClient;
...@@ -94,6 +101,8 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -94,6 +101,8 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
private String mCollectId; private String mCollectId;
private static String isCollection = "0"; //0 没有收藏 1 收藏 private static String isCollection = "0"; //0 没有收藏 1 收藏
private ClipboardManager myClipboard; private ClipboardManager myClipboard;
private TravelBookingDialog travelBookingDialog;
private BeanTourDetailData.DataBeanX DetailsData;
@Autowired() @Autowired()
...@@ -121,6 +130,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -121,6 +130,7 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
// .putExtra("dataBean", dataBean); // .putExtra("dataBean", dataBean);
// } // }
@Override @Override
protected int setLayout() { protected int setLayout() {
return R.layout.activity_travel_details; return R.layout.activity_travel_details;
...@@ -196,11 +206,6 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -196,11 +206,6 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
} else if (id == R.id.tv_appointment) { } else if (id == R.id.tv_appointment) {
//预订 //预订
//登录
if (TextUtils.isEmpty(OkGoUtil.getToken())) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_LOGINRV).navigation();
return;
}
//实名认证 //实名认证
// BeanUserInfo.UserInfo userInfo = getUserInfo(); // BeanUserInfo.UserInfo userInfo = getUserInfo();
...@@ -210,10 +215,37 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -210,10 +215,37 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
// return; // return;
// } // }
// } // }
//
mWebView.loadUrl("JavaScript:openModal()"); // Android调用h5
// mWebView.loadUrl("JavaScript:openModal()"); // Android调用h5
travelBooking();
}
}
/**
* 预定
*/
private void travelBooking() {
if (TextUtils.isEmpty(OkGoUtil.getToken())) {
ARouter.getInstance().build(Constance.ACTIVITY_URL_LOGINRV).navigation();
return;
}
if (DetailsData != null) {
if (travelBookingDialog == null) {
travelBookingDialog = new TravelBookingDialog(mActivity);
} }
travelBookingDialog.setNewData(DetailsData);
travelBookingDialog.show();
}
travelBookingDialog.setOnDayClickListener(new TravelBookingDialog.OnOKClickListener() {
@Override
public void onClickData(BeanOrderParam data) {
startActivity(TravelerConfirmOrderActivity.getIntent(mActivity, data));
}
});
} }
private void cancelCollect() { private void cancelCollect() {
...@@ -239,6 +271,16 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -239,6 +271,16 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
if (TextUtils.isEmpty(name) || TextUtils.isEmpty(url)) { if (TextUtils.isEmpty(name) || TextUtils.isEmpty(url)) {
getTourDetail(); getTourDetail();
} }
getDetailData();
}
/**
* 详情页面数据请求
*/
private void getDetailData() {
Map<String, Object> map = new HashMap<>();
map.put("goodId", id);
mPresenter.getData(RvFrameConfig.HOST, 4, TourismApi.TOUR_UNAUTH_DETAILS, BeanTourDetailData.class, map, false);
} }
//收藏请求 //收藏请求
...@@ -280,7 +322,20 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -280,7 +322,20 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
initShare(webUrl + "&shareType=app&code=" + code, name, content, url); initShare(webUrl + "&shareType=app&code=" + code, name, content, url);
} }
break; break;
case 4:
setDetailsData((BeanTourDetailData) result);
break;
}
}
private void setDetailsData(BeanTourDetailData bean) {
DetailsData = bean.getData();
if (DetailsData != null && DetailsData.getStock() < 1) {
TvAppointment.setEnabled(false);
TvAppointment.setText("已售完");
TvAppointment.setBackground(mActivity.getResources().getDrawable(R.color.gray_707070));
} }
} }
...@@ -450,13 +505,18 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -450,13 +505,18 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
} }
@JavascriptInterface @JavascriptInterface
public void showButton() { public void showDialog() {
mWebView.post(new Runnable() { travelBooking();
@Override
public void run() {
llItemBottom.setVisibility(View.VISIBLE);
} }
});
@JavascriptInterface
public void showButton() {
// mWebView.post(new Runnable() {
// @Override
// public void run() {
// llItemBottom.setVisibility(View.VISIBLE);
// }
// });
} }
...@@ -464,51 +524,50 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter> ...@@ -464,51 +524,50 @@ public class TravelDetailsActivity extends BaseStatusActivity<TourismPresenter>
@JavascriptInterface @JavascriptInterface
public void hideButton() { public void hideButton() {
mWebView.post(new Runnable() { // mWebView.post(new Runnable() {
@Override // @Override
public void run() { // public void run() {
llItemBottom.setVisibility(View.GONE); // llItemBottom.setVisibility(View.GONE);
} // }
}); // });
} }
@JavascriptInterface @JavascriptInterface
public void tourStock(int num) { public void tourStock(int num) {
if (num > 0) { // if (num > 0) {
mWebView.post(new Runnable() { // mWebView.post(new Runnable() {
@Override // @Override
public void run() { // public void run() {
//
} // }
}); // });
} else { // } else {
mWebView.post(new Runnable() { // mWebView.post(new Runnable() {
@Override // @Override
public void run() { // public void run() {
TvAppointment.setEnabled(false); // TvAppointment.setEnabled(false);
TvAppointment.setText("已售完"); // TvAppointment.setText("已售完");
TvAppointment.setBackground(mActivity.getResources().getDrawable(R.color.gray_707070)); // TvAppointment.setBackground(mActivity.getResources().getDrawable(R.color.gray_707070));
} // }
}); // });
// }
}
} }
@JavascriptInterface @JavascriptInterface
public void readyOrder(String orderJson) { public void readyOrder(String orderJson) {
if (!TextUtil.isEmpty(orderJson)) { // if (!TextUtil.isEmpty(orderJson)) {
beanOrderParam = new Gson().fromJson(orderJson, // beanOrderParam = new Gson().fromJson(orderJson,
new TypeToken<BeanOrderParam>() { // new TypeToken<BeanOrderParam>() {
}.getType()); // }.getType());
if (Integer.valueOf(beanOrderParam.getAdultNum()) < Integer.valueOf(beanOrderParam.getChildNum())) { // if (Integer.valueOf(beanOrderParam.getAdultNum()) < Integer.valueOf(beanOrderParam.getChildNum())) {
showToast("成人数要大于或等于儿童数"); // showToast("成人数要大于或等于儿童数");
} else if (Integer.valueOf(beanOrderParam.getAdultNum()) == 0) { // } else if (Integer.valueOf(beanOrderParam.getAdultNum()) == 0) {
showToast("成人数不能为空!"); // showToast("成人数不能为空!");
} else { // } else {
startActivity(TravelerConfirmOrderActivity.getIntent(mActivity, beanOrderParam)); // startActivity(TravelerConfirmOrderActivity.getIntent(mActivity, beanOrderParam));
} // }
//
} // }
} }
@JavascriptInterface @JavascriptInterface
......
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/colorWrite"
android:orientation="vertical"
tools:ignore="MissingDefaultResource">
<RelativeLayout
android:layout_width="match_parent"
android:layout_height="wrap_content">
<ImageView
android:id="@+id/iv_close"
android:layout_width="@dimen/size_30"
android:layout_height="@dimen/size_30"
android:layout_alignParentRight="true"
android:layout_marginTop="@dimen/size_10"
android:layout_marginRight="@dimen/size_10"
android:padding="@dimen/size_5"
android:src="@drawable/common_btn_close" />
</RelativeLayout>
<android.support.v4.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_15"
android:layout_marginRight="@dimen/size_15"
android:orientation="vertical">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_5"
android:text="选择出发地点"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_16" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rc_departure"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_10"
android:text="选择活动日期"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_16" />
<android.support.v7.widget.RecyclerView
android:id="@+id/rc_departuretime"
android:layout_width="match_parent"
android:layout_height="wrap_content"></android.support.v7.widget.RecyclerView>
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_10"
android:layout_marginBottom="@dimen/size_10"
android:text="出游人数"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_16" />
<include layout="@layout/common_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/size_70"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_adult_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_3"
android:text="1个成人可以携带1个1.2米以下儿童"
android:textColor="@color/colorGray"
android:textSize="@dimen/text_10" />
</LinearLayout>
<LinearLayout
android:layout_width="@dimen/size_110"
android:layout_height="@dimen/size_35"
android:background="@drawable/shape_rv_edittext_line_input">
<TextView
android:id="@+id/tv_item_booking_adult_less"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="—"
android:textColor="@color/textGray"
android:textSize="@dimen/text_14" />
<View
android:layout_width="@dimen/size_half"
android:layout_height="match_parent"
android:background="@color/colorGray" />
<TextView
android:id="@+id/tv_booking_adult"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.5"
android:gravity="center"
android:text="1"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
<View
android:layout_width="@dimen/size_half"
android:layout_height="match_parent"
android:background="@color/colorGray" />
<TextView
android:id="@+id/tv_item_booking_adult_add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="+"
android:textColor="@color/textGray"
android:textSize="@dimen/text_14" />
</LinearLayout>
</LinearLayout>
<include layout="@layout/common_line" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="@dimen/size_70"
android:gravity="center_vertical"
android:orientation="horizontal">
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_child_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_3"
android:text="1.2~1.4米儿童半价收费"
android:textColor="@color/colorGray"
android:textSize="@dimen/text_10" />
</LinearLayout>
<LinearLayout
android:layout_width="@dimen/size_110"
android:layout_height="@dimen/size_35"
android:background="@drawable/shape_rv_edittext_line_input">
<TextView
android:id="@+id/tv_item_booking_child_less"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="—"
android:textColor="@color/textGray"
android:textSize="@dimen/text_14" />
<View
android:layout_width="@dimen/size_half"
android:layout_height="match_parent"
android:background="@color/colorGray" />
<TextView
android:id="@+id/tv_booking_child"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1.5"
android:gravity="center"
android:text="0"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
<View
android:layout_width="@dimen/size_half"
android:layout_height="match_parent"
android:background="@color/colorGray" />
<TextView
android:id="@+id/tv_item_booking_child_add"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="1"
android:gravity="center"
android:text="+"
android:textColor="@color/textGray"
android:textSize="@dimen/text_14" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
</android.support.v4.widget.NestedScrollView>
<TextView
android:id="@+id/tv_travel_booking_ok"
android:layout_width="match_parent"
android:layout_height="@dimen/size_45"
android:layout_marginLeft="@dimen/size_20"
android:layout_marginRight="@dimen/size_20"
android:layout_marginBottom="@dimen/size_10"
android:layout_marginTop="@dimen/size_5"
android:background="@drawable/shape_rv_bg_shallow_dark_yellow_circle"
android:gravity="center"
android:text="确定"
android:textColor="@color/colorWrite"
android:textSize="@dimen/text_16" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_10"
android:layout_marginBottom="@dimen/size_10"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_company_select"
android:layout_width="@dimen/size_20"
android:layout_height="@dimen/size_20"
android:src="@drawable/selector_rv_icon_mark" />
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_10"
android:layout_weight="1"
android:orientation="vertical">
<TextView
android:id="@+id/tv_company"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="欣新房车(松山湖)有限公司"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
<TextView
android:id="@+id/tv_address"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_3"
android:text="东莞市和兴街与莞樟路交叉口西100米"
android:textColor="@color/textGray"
android:textSize="@dimen/text_12" />
</LinearLayout>
</LinearLayout>
<include layout="@layout/common_line" />
</LinearLayout>
\ No newline at end of file
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="@dimen/size_10"
android:layout_marginBottom="@dimen/size_10"
android:gravity="center_vertical"
android:orientation="horizontal">
<ImageView
android:id="@+id/iv_time_select"
android:layout_width="@dimen/size_20"
android:layout_height="@dimen/size_20"
android:src="@drawable/selector_rv_icon_mark" />
<TextView
android:id="@+id/tv_time"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginLeft="@dimen/size_10"
android:text="2019-06-12周三~2019-06-18周二"
android:textColor="@color/colorMain"
android:textSize="@dimen/text_14" />
</LinearLayout>
<include layout="@layout/common_line" />
</LinearLayout>
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment