package com.dplustours.b2c.View.adapter;
/**
* Created by zhq_zhao on 2017/4/5.
* 面向holder編程思想的父類抽取
*/
import android.view.View;
public abstract class BaseHolder<T> {
public View holderView;//注意:一開始就將convertView轉移到holder中用一個變量表示
public BaseHolder(){
//1.初始化holderView
holderView = initHolderView();//需要holderView
//2.設置tag
holderView.setTag(this);
}
/**
* 初始化holderView
* @return
*/
public abstract View initHolderView();
/**
* 綁定數據
*/
public abstract void bindData(T data);
/**
* 獲取holderView
* @return
*/
public View getHolderView(){
return holderView;
}
}
package com.dplustours.b2c.View.adapter;
/**
* Created by zhq_zhao on 2017/4/6.
*/
import android.support.v4.view.PagerAdapter;
import android.view.View;
import android.view.ViewGroup;
import java.util.ArrayList;
public class BasePagerAdapter<T> extends PagerAdapter {
protected ArrayList<T> list;
public BasePagerAdapter(ArrayList<T> list) {
super();
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view==object;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
container.removeView((View) object);
}
}
package com.dplustours.b2c.View.adapter;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import java.util.ArrayList;
/**
* Created by zhq_zhao on 2017/4/5.
* listview的adapter的超級父類
*/
public abstract class BasicAdapter<T> extends BaseAdapter {
protected ArrayList<T> list;
public BasicAdapter(ArrayList<T> list) {
super();
this.list = list;
}
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return list.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// 1.初始化holder
BaseHolder<T> holder = null;
if (convertView == null) {
holder = getHolder(position);//需要一個不固定的holder
} else {
holder = (BaseHolder) convertView.getTag();
}
// 3.綁定數據
holder.bindData(list.get(position));
return holder.getHolderView();
}
protected abstract BaseHolder<T> getHolder(int positon);
}
package com.dplustours.b2c.View.activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.LinearLayout;
import android.widget.ScrollView;
import com.dplustours.b2c.R;
import com.dplustours.b2c.Utils.ACache;
import com.dplustours.b2c.Utils.GsonUtils;
import com.dplustours.b2c.Utils.NetGlobalParams;
import com.dplustours.b2c.Utils.NetUtils;
import com.dplustours.b2c.Utils.safe.MD5Coder;
import com.dplustours.b2c.View.adapter.CapsiteViewpagerInHolder;
import com.dplustours.b2c.View.adapter.CapteCarInfoHolder;
import com.dplustours.b2c.View.adapter.CapteLocationHolder;
import com.dplustours.b2c.View.adapter.CapteMultInfoHolder;
import com.dplustours.b2c.View.adapter.CapteOrderHolder;
import com.dplustours.b2c.View.adapter.CaptePolicyHolder;
import com.dplustours.b2c.View.application.MyApplication;
import com.dplustours.b2c.View.application.UIHelper;
import com.dplustours.b2c.View.view.ProgressDialog;
import com.dplustours.b2c.bean.BedIdBeanInfos;
import com.dplustours.b2c.bean.CapteInfosInitBean;
import com.dplustours.b2c.bean.eventbusbean.CapteCeaseActivityBean;
import com.dplustours.b2c.bean.eventbusbean.CapteOrderHlderTimeInfoBean;
import com.dplustours.b2c.bean.eventbusbean.EventBusUtils;
import com.nineoldandroids.view.ViewHelper;
import com.nineoldandroids.view.ViewPropertyAnimator;
import com.zhy.http.okhttp.callback.StringCallback;
import org.greenrobot.eventbus.EventBus;
import org.greenrobot.eventbus.Subscribe;
import org.greenrobot.eventbus.ThreadMode;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
import java.util.Map;
import java.util.TreeMap;
import okhttp3.Call;
/**
* Created by zhq_zhao on 2017/4/7.
*/
public class CampsiteOrderActivity extends BaseActivity implements View.OnClickListener {
private String name;
private LinearLayout holder_container;
private CapsiteViewpagerInHolder capsiteViewpagerInHolder;
private CapteLocationHolder capteLocationHolder;
private CapteMultInfoHolder capteMultInfoHolder;
private CapteOrderHolder capteOrderHolder;
private CapteCarInfoHolder capteCarInfoHolder;
private View view;
private ScrollView scrollview;
private CaptePolicyHolder captePolicyHolder;
private ProgressDialog mProgressDialog;
private CapteCeaseActivityBean mevent;
private int aultCount = 1;
private int childCount = 0;
private String text1;
private String text2;
private String text3;
private int homeCount = 1;
private CapteOrderHlderTimeInfoBean mCapteOrderHlderTimeInfoBean;
private LinearLayout ll_all;
private Bundle bundle;
@Override
protected View getSuccessView() {
if (view == null) {
view = View.inflate(MyApplication.context, R.layout.activity_campsite, null);
scrollview = (ScrollView) view.findViewById(R.id.scrollview);
ll_all = (LinearLayout) view.findViewById(R.id.ll_all);
//不加這個每次進去的時候scrollview默認不是在最頂部,scroview的y軸和android中的y軸相反,正的是上移動
scrollview.smoothScrollTo(0, 20);
}
holder_container = (LinearLayout) view.findViewById(R.id.holder_container);
scrollview = (ScrollView) view.findViewById(R.id.scrollview);
//1.初始化營地預訂數據模塊
capsiteViewpagerInHolder = new CapsiteViewpagerInHolder();
holder_container.addView(capsiteViewpagerInHolder.getHolderView());//佈局是活的,是動態添加的不是寫死的
//2 初始化營地預訂定位數據模塊
capteLocationHolder = new CapteLocationHolder();
capteLocationHolder.setAttachActivity(CampsiteOrderActivity.this);
holder_container.addView(capteLocationHolder.getHolderView());//佈局是活的,是動態添加的不是寫死的
//3初始化營地預訂多項選擇服務類型模塊
capteMultInfoHolder = new CapteMultInfoHolder();
capteMultInfoHolder.setAttachActivity(CampsiteOrderActivity.this);
holder_container.addView(capteMultInfoHolder.getHolderView());
//4 初始化營地預訂入住和離開模塊
capteOrderHolder = new CapteOrderHolder();
capteOrderHolder.setActivity(CampsiteOrderActivity.this);
holder_container.addView(capteOrderHolder.getHolderView());
//5 初始化營地預訂營地車信息
capteCarInfoHolder = new CapteCarInfoHolder();
capteCarInfoHolder.AtachActivity(CampsiteOrderActivity.this);
holder_container.addView(capteCarInfoHolder.getHolderView());
//6初始化營地政策
captePolicyHolder = new CaptePolicyHolder();
captePolicyHolder.attachActivity(this);
holder_container.addView(captePolicyHolder.getHolderView());
return view;
}
@Override
protected String setHeadStyleTitle() {
return "營地預訂";
}
@Override
protected void requestData() {
EventBus.getDefault().register(this);//註冊eventbus事件
////2.3.5.1 初始化營地信息
CacheBedId();
// //2 這裏更新UI
// runOnUiThread(new Runnable() {
// @Override
// public void run() {
// UpdateUI();
//
// }
// });
}
/**
* 緩存牀型id
*/
public void CacheBedId() {
if (null == mProgressDialog) {
mProgressDialog = new ProgressDialog(CampsiteOrderActivity.this);
}
mProgressDialog.show();
Map map = new TreeMap();
map.put(GsonUtils.snTime, String.valueOf(System.currentTimeMillis()));
Map<String, String> resultMap = GsonUtils.sortMapByKey(map); // 按Key進行排序
String sn = GsonUtils.buildSN(resultMap);
try {
sn = URLEncoder.encode(sn, "UTF-8");
sn = MD5Coder.getMD5Code(sn);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
map.put(GsonUtils.sn, sn);
String json = GsonUtils.buildJson(map);
try {
NetUtils.getmInstance().postJsons(NetGlobalParams.GETBEDID, json, new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
UIHelper.ToastMessage(MyApplication.context, "網絡連接超時");
mProgressDialog.dismiss();
}
@Override
public void onResponse(String response, int id) {
Log.i("response", "onResponse: " + response);
mProgressDialog.dismiss();
//將json轉化爲對象
try {
BedIdBeanInfos mBedIdBeanInfos = GsonUtils.GsonToBean(response, BedIdBeanInfos.class);
if (mBedIdBeanInfos != null) {
if (mBedIdBeanInfos.getStatus() == 0) {//請求成功
for (int i = 0; i < mBedIdBeanInfos.getDetail().size(); i++) {
String bedId = mBedIdBeanInfos.getDetail().get(i).getBedId();
String bedName = mBedIdBeanInfos.getDetail().get(i).getName();
ACache aCache = ACache.getmInstance();
//使用之前先清楚掉以前的緩存
aCache.clean(bedId);
aCache.addMemoryCache(bedId, bedName);
}
initDataOfCaption();
}
}
} catch (Exception e) {
UIHelper.ToastMessage(MyApplication.context, "數據格式錯誤,請檢查網絡");
mProgressDialog.dismiss();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
private void initDataOfCaption() {
Map map = new TreeMap();
map.put(GsonUtils.snTime, String.valueOf(System.currentTimeMillis()));
Map<String, String> resultMap = GsonUtils.sortMapByKey(map); // 按Key進行排序
String sn = GsonUtils.buildSN(resultMap);
try {
sn = URLEncoder.encode(sn, "UTF-8");
sn = MD5Coder.getMD5Code(sn);
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
}
map.put(GsonUtils.sn, sn);
String json = GsonUtils.buildJson(map);
try {
NetUtils.getmInstance().postJsons(NetGlobalParams.CAPTIONINIT, json, new StringCallback() {
@Override
public void onError(Call call, Exception e, int id) {
UIHelper.ToastMessage(CampsiteOrderActivity.this,"網絡連接超時");
mProgressDialog.dismiss();
}
@Override
public void onResponse(String response, int id) {
mProgressDialog.dismiss();
//將json轉化爲對象
try {
CapteInfosInitBean mCapteInfosInitBean = GsonUtils.GsonToBean(response, CapteInfosInitBean.class);
if (mCapteInfosInitBean != null) {
if (mCapteInfosInitBean.getStatus() == 0) {//請求成功
//1.初始化營地預訂數據模塊數據
capsiteViewpagerInHolder.bindData(mCapteInfosInitBean);
capsiteViewpagerInHolder.setAttachActivity(CampsiteOrderActivity.this);
//2 初始化營地預訂定位數據模塊數據
capteLocationHolder.bindData(mCapteInfosInitBean);
//綁定酒店信息
capteOrderHolder.bindData(null);
//5 初始化營地預訂營地車信息
capteCarInfoHolder.bindData(mCapteInfosInitBean);
name = mCapteInfosInitBean.getDetail().getName();
ll_all.setVisibility(View.GONE);
Log.i("response", "onResponse: " + response);
}
}
}catch (Exception e){
UIHelper.ToastMessage(CampsiteOrderActivity.this,"數據格式錯誤,請檢查網絡");
mProgressDialog.dismiss();
}
}
});
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 請求回來的網路數據更新UI界面
*/
private void UpdateUI() {
//0 剛開始讓整個移動到最右邊然後進行顯示的動畫效果
//一開始讓整個View移動到左邊
view.measure(0, 0);//保證能測量到
ViewHelper.setTranslationX(view, view.getMeasuredWidth());
ViewPropertyAnimator.animate(view)
.translationXBy(-view.getMeasuredWidth())
//.setInterpolator(new OvershootInterpolator())
.setDuration(1000)
.start();
// //1.初始化營地預訂viewpager數據模塊數據
// capsiteViewpagerInHolder.bindData(null);
// //2 初始化營地預訂定位數據模塊數據
// capteLocationHolder.bindData(null);
//// //3初始化營地預訂多項選擇服務類型模塊
capteMultInfoHolder.bindData(null);
// //4 初始化營地預訂入住和離開模塊
// capteOrderHolder.bindData(null);
// //5 初始化營地預訂營地車信息
// capteCarInfoHolder.bindData(null);
// //6初始化營地政策
// captePolicyHolder.bindData(null);
}
/**
* eventbus傳遞參數
*
* @param eventBusUtils
*/
@Subscribe(threadMode = ThreadMode.MAIN, sticky = true)
public void showEventbus(EventBusUtils eventBusUtils) {
if (eventBusUtils instanceof CapteCeaseActivityBean) { //成人兒童預訂信息
mevent = (CapteCeaseActivityBean) eventBusUtils;
Map valuesMap = mevent.ValuesMap();
aultCount = (int) valuesMap.get("aultCount");
childCount = (int) valuesMap.get("childCount");
homeCount = (int) valuesMap.get("homeCount");
text1 = (String) valuesMap.get("text1");
text2 = (String) valuesMap.get("text2");
text3 = (String) valuesMap.get("text3");
capteOrderHolder.setRightInfo(aultCount, childCount, homeCount, text1, text2, text3);
}
}
@Override
public void onClick(View v) {
switch (v.getId()) {
// case R.id.btn_headtitle_leftback:
// onBackPressed();
// break;
// case R.id. lv_listview:
// break;
default:
break;
}
}
@Override
protected void onResume() {
super.onResume();
//綁定酒店信息
capteOrderHolder.bindData(null);
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mevent != null) {
EventBus.getDefault().removeStickyEvent(mevent);
} else if (mCapteOrderHlderTimeInfoBean != null) {
EventBus.getDefault().removeStickyEvent(mCapteOrderHlderTimeInfoBean);
}
}
public String CaravanId, Breakfirst, BedName, Bed ;
public void SetBreakfirst(String Breakfirst) {
this.Breakfirst = Breakfirst;
}
public void SetCaravanId(String CaravanId) {
this.CaravanId = CaravanId;
}
public void SetBedName(String BedName) {
this.BedName = BedName;
}
public void SetBed(String Bed) {
this.Bed = Bed;
}
public void SetName(String name) {
this.name = name;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 1508 && resultCode == 0x101) {
// ToastUtils.getToast(this, "****").show();
if (!MyApplication.getInstance().getPreferencesUtils().getUserid().equals("")) {
//跳轉到房間詳情頁面
if (bundle == null) {
bundle = new Bundle();
}
bundle.putString("CaravanId", "" +CaravanId);
if (Bed != null) {
bundle.putString("miaoshu", Breakfirst + BedName + "會員價");
} else {
bundle.putString("miaoshu",Breakfirst + "會員價");
}
bundle.putString("Name",name);
UIHelper.Go(this, CapteHomeDetailsInfoActivity.class, bundle);
}
}
super.onActivityResult(requestCode, resultCode, data);
}
}
package com.dplustours.b2c.View.adapter;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.dplustours.b2c.R;
import com.dplustours.b2c.View.activity.CampsiteOrderActivity;
import com.dplustours.b2c.View.application.MyApplication;
import com.dplustours.b2c.View.application.UIHelper;
import com.dplustours.b2c.View.view.MyListView;
import com.dplustours.b2c.bean.CapteInfosInitBean;
import java.util.ArrayList;
/**
* Created by zhq_zhao on 2017/4/10.
*/
public class CapteCarInfoHolder extends BaseHolder<CapteInfosInitBean> {
private MyListView caption_car_info;
private CarListAdapter carListAdapter;
private TextView tv_caption_more;
private CapteInfosInitBean info;
private ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean> caravanTypes;
private LinearLayout ll_more;
private int lastVisiblePosition;
private ImageView iv_up_and_low;
@Override
public View initHolderView() {
View view = View.inflate(MyApplication.context, R.layout.layout_caption_carinfo, null);
caption_car_info = (MyListView) view.findViewById(R.id.caption_car_info);
ll_more = (LinearLayout) view.findViewById(R.id.ll_more);
iv_up_and_low = (ImageView) view.findViewById(R.id.iv_up_and_low);
tv_caption_more = (TextView) view.findViewById(R.id.tv_caption_more);
return view;
}
@Override
public void bindData(final CapteInfosInitBean data) {
if (data != null) {
this.info = data;
//網上請求數據
caravanTypes = (ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean>) info.getDetail().getCaravanTypes();
//在設置適配器之前我們只讓listview顯示三條數據
carListAdapter = new CarListAdapter(caravanTypes,campsiteOrderActivity, data.getDetail().getName());
if(caravanTypes.size()<=3){
ll_more.setVisibility(View.GONE);
carListAdapter.count = caravanTypes.size();
}else{
ll_more.setVisibility(View.VISIBLE);
carListAdapter.count = 3;
}
carListAdapter.setAtachActivity(campsiteOrderActivity);
caption_car_info.setAdapter(carListAdapter);
//一開始讓listview只顯示我們指定的item條數
ll_more.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (tv_caption_more.getText().toString().equals("查看全部")) {
carListAdapter.count = caravanTypes.size();
tv_caption_more.setText("收起");
iv_up_and_low.setImageResource(R.drawable.up);
carListAdapter.notifyDataSetChanged();
lastVisiblePosition= caption_car_info.getLastVisiblePosition();
} else {
carListAdapter.count = 3;
tv_caption_more.setText("查看全部");
iv_up_and_low.setImageResource(R.drawable.low);
carListAdapter.notifyDataSetChanged();
lastVisiblePosition= caption_car_info.getLastVisiblePosition();
}
}
});
//設置item的點擊事件隱藏和顯示
caption_car_info.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
carListAdapter.changeImageVisable(view, position);
carListAdapter.setMtextHome(data.getDetail().getCaravanTypes().get(position).getName());
}
});
}
}
private CampsiteOrderActivity campsiteOrderActivity;
public void AtachActivity(CampsiteOrderActivity campsiteOrderActivity) {
this.campsiteOrderActivity=campsiteOrderActivity;
}
}
package com.dplustours.b2c.View.adapter;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.text.Html;
import android.text.TextPaint;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.bumptech.glide.Glide;
import com.bumptech.glide.load.resource.bitmap.CenterCrop;
import com.dplustours.b2c.R;
import com.dplustours.b2c.Utils.ACache;
import com.dplustours.b2c.View.activity.CampsiteOrderActivity;
import com.dplustours.b2c.View.activity.CapteDetailsActionsActivity;
import com.dplustours.b2c.View.activity.CapteHomeDetailsInfoActivity;
import com.dplustours.b2c.View.activity.LoginActivity;
import com.dplustours.b2c.View.activity.ScaleTypeImageViewActivity;
import com.dplustours.b2c.View.application.MyApplication;
import com.dplustours.b2c.View.application.UIHelper;
import com.dplustours.b2c.View.view.GlideRoundTransform;
import com.dplustours.b2c.View.view.MyListView;
import com.dplustours.b2c.bean.CapteInfosInitBean;
import com.dplustours.b2c.bean.eventbusbean.CarListAdapterBean;
import org.greenrobot.eventbus.EventBus;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/**
* Created by zhq_zhao on 2017/4/10.
*/
public class CarListAdapter extends BaseAdapter {
private ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean> arrayList;
private View mLastView;
private int mLastPosition;
private int mLastVisibility;
public int count;
private Holder holder;
private Bundle bundle;
private CapteListInfos mCapteListInfos;
private TextView tv_1;
private TextView tv_descri;
private ImageView iv_1;
private TextView tv_price;
private ImageView iv_login;
private LinearLayout ll_tv_1;
private List<CapteInfosInitBean.DetailBean.CaravanTypesBean.CaravansBean> caravans;
private int ivpostion;
private TextView text_no_yuding;
private ArrayList isMemberOnlyArrayList = new ArrayList();
private List<CapteInfosInitBean.DetailBean.CaravanTypesBean.PicturesBean> pictures;
private CampsiteOrderActivity mactivity;
private String name;
private String textHomename;
private final ACache aCache;
public CarListAdapter(ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean> caravanTypes, CampsiteOrderActivity campsiteOrderActivity, String name) {
this.arrayList = caravanTypes;
mLastPosition = -1;
this.mactivity = campsiteOrderActivity;
this.name = name;
aCache = ACache.getmInstance();
}
@Override
public int getCount() {
return count;
}
@Override
public Object getItem(int position) {
return arrayList.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
// android:text="¥100"
holder = null;
if (convertView == null) {
convertView = View.inflate(MyApplication.context, R.layout.layout_caption_car_info, null);
holder = new Holder();
holder.iv_car_info = (ImageView) convertView.findViewById(R.id.iv_car_info);
holder.tv_car1 = (TextView) convertView.findViewById(R.id.tv_car1);
holder.tv_car2 = (TextView) convertView.findViewById(R.id.tv_car2);
holder.iv_isMember = (ImageView) convertView.findViewById(R.id.iv_isMember);
holder.tv_price = (TextView) convertView.findViewById(R.id.tv_price);
holder.tv_price = (TextView) convertView.findViewById(R.id.tv_price);
holder.ml_list_cars = (MyListView) convertView.findViewById(R.id.ml_list_cars);
holder.ll_contain = (LinearLayout) convertView.findViewById(R.id.ll_contain);
convertView.setTag(holder);
convertView.setTag(R.id.iv_car_info, holder);
} else {
holder = (Holder) convertView.getTag();
holder = (Holder) convertView.getTag(R.id.iv_car_info);
}
holder.iv_car_info.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//跳轉到縮略圖進行操作
UIHelper.GoFlag(MyApplication.context, ScaleTypeImageViewActivity.class);
EventBus.getDefault().postSticky(new CarListAdapterBean() {
@Override
public Map ValuesMap() {
return null;
}
@Override
public String ValuesString() {
return null;
}
@Override
public ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean.PicturesBean> ValuesArrayList() {
pictures = arrayList.get(position).getPictures();
return (ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean.PicturesBean>) pictures;
}
@Override
public Object ValuesObject() {
return null;
}
});
}
});
//只有在圖片資源不能爲空的情況下才可以點擊進行縮放
//默認肯定不相等
if (mLastPosition == position) {
holder.ml_list_cars.setVisibility(mLastVisibility);
} else {//首先就是隱藏,執行這個代碼
holder.ml_list_cars.setVisibility(View.GONE);
}
//這裏設置數據
isMemberOnlyArrayList.clear();
for (int i = 0; i <= arrayList.get(position).getCaravans().size() - 1; i++) {
int isMemberOnly = arrayList.get(position).getCaravans().get(i).getIsMemberOnly();
isMemberOnlyArrayList.add(isMemberOnly);
if (isMemberOnlyArrayList.contains(1)) {
holder.iv_isMember.setVisibility(View.VISIBLE);
} else if (!isMemberOnlyArrayList.contains(1)) {
holder.iv_isMember.setVisibility(View.GONE);
}
}
holder.tv_car1.setText(arrayList.get(position).getName());
if (arrayList.get(position).getBed() != null) {
holder.tv_car2.setText(aCache.getStringInfos(arrayList.get(position).getBed()) + " " + arrayList.get(position).getArea());
} else {
holder.tv_car2.setText(arrayList.get(position).getArea());
}
String str = "<font color='#E58A84'> " + arrayList.get(position).getLowestPrice() + "</font>";
TextPaint tp = holder.tv_price.getPaint();
tp.setFakeBoldText(true);
holder.tv_price.setText(Html.fromHtml(str));
caravans = arrayList.get(position).getCaravans();
mCapteListInfos = new CapteListInfos((ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean.CaravansBean>) caravans);
holder.ml_list_cars.setAdapter(mCapteListInfos);
// NetUtils.getmInstance().showImageViewXUtils(holder.iv_car_info, arrayList.get(position).getPictures().get(0).getPictureUrl(), R.drawable.loadingpicture, R.drawable.loadingpicture);
if (arrayList.get(position).getPictures().size() >= 1) {
String pictureUrl = arrayList.get(position).getPictures().get(0).getPictureUrl();
if (pictureUrl != null) {
Log.i("position", "getView: " + position);
Glide.with(MyApplication.context).load(pictureUrl).transform(new CenterCrop(MyApplication.context), new GlideRoundTransform(MyApplication.context, 5)).into(holder.iv_car_info);
//這裏解決postion複用錯亂的現象
}
}
return convertView;
}
private Activity campsiteOrderActivity;
public void setAtachActivity(Activity campsiteOrderActivity) {
this.campsiteOrderActivity = campsiteOrderActivity;
}
public void setMtextHome(String name) {
this.textHomename=name;
}
public class CapteListInfos extends BasicAdapter {
public CapteListInfos(ArrayList<CapteInfosInitBean.DetailBean.CaravanTypesBean.CaravansBean> list) {
super(list);
}
@Override
protected BaseHolder getHolder(int positon) {
BaseHolder holder = null;
holder = new CapteInfosHolder(positon);
return holder;
}
}
public class CapteInfosHolder extends BaseHolder<CapteInfosInitBean.DetailBean.CaravanTypesBean.CaravansBean> {
private int positon;
public CapteInfosHolder(int positon) {
this.positon = positon;
}
@Override
public View initHolderView() {
View view = View.inflate(MyApplication.context, R.layout.capte_list_xiala, null);
tv_1 = (TextView) view.findViewById(R.id.tv_1);
tv_descri = (TextView) view.findViewById(R.id.tv_descri);
text_no_yuding = (TextView) view.findViewById(R.id.text_no_yuding);
iv_1 = (ImageView) view.findViewById(R.id.iv_1);
ll_tv_1 = (LinearLayout) view.findViewById(R.id.ll_tv_1);
tv_price = (TextView) view.findViewById(R.id.tv_price);
iv_login = (ImageView) view.findViewById(R.id.iv_login);
return view;
}
@Override
public void bindData(final CapteInfosInitBean.DetailBean.CaravanTypesBean.CaravansBean data) {
if (data != null) {
tv_1.setText(data.getName().toString());
String brakfirst = data.getBreakfirst().toString();
String bed = data.getBed();
if (bed != null) {
tv_descri.setText(brakfirst + " " + aCache.getStringInfos(bed));
} else {
tv_descri.setText(brakfirst);
}
if (!MyApplication.getInstance().getPreferencesUtils().getUserid().equals("")) {
if (data.getIsMemberOnly() == 1) {
iv_1.setVisibility(View.VISIBLE);
if(data.getIsReservation()==1){//可以預訂
iv_login.setVisibility(View.VISIBLE);
text_no_yuding.setVisibility(View.GONE);
iv_login.setEnabled(true);
text_no_yuding.setEnabled(false);
}else if(data.getIsReservation()==0){//不可以預訂
iv_login.setVisibility(View.GONE);
text_no_yuding.setVisibility(View.VISIBLE);
iv_login.setEnabled(false);
text_no_yuding.setEnabled(false);
}
tv_price.setText("¥" + data.getSpecialPrice().toString());
} else if (data.getIsMemberOnly() == 0) {
iv_1.setVisibility(View.GONE);
if(data.getIsReservation()==1){//可以預訂
iv_login.setVisibility(View.VISIBLE);
text_no_yuding.setVisibility(View.GONE);
text_no_yuding.setEnabled(false);
iv_login.setEnabled(true);
}else if(data.getIsReservation()==0){//不可以預訂
iv_login.setVisibility(View.GONE);
text_no_yuding.setVisibility(View.VISIBLE);
text_no_yuding.setEnabled(false);
iv_login.setEnabled(false);
}
tv_price.setText("¥" + data.getPrice().toString());
}
} else {
if (data.getIsMemberOnly() == 1) {
iv_1.setVisibility(View.VISIBLE);
if(data.getIsReservation()==1){//可以預訂
iv_login.setVisibility(View.VISIBLE);
text_no_yuding.setVisibility(View.GONE);
iv_login.setEnabled(true);
text_no_yuding.setEnabled(false);
}else if(data.getIsReservation()==0){//不可以預訂
iv_login.setVisibility(View.GONE);
text_no_yuding.setVisibility(View.VISIBLE);
iv_login.setEnabled(false);
text_no_yuding.setEnabled(false);
}
tv_price.setText("¥" + data.getSpecialPrice().toString());
} else if (data.getIsMemberOnly() == 0) {
iv_1.setVisibility(View.GONE);
if(data.getIsReservation()==1){//可以預訂
text_no_yuding.setVisibility(View.GONE);
text_no_yuding.setEnabled(false);
iv_login.setEnabled(true);
iv_login.setVisibility(View.VISIBLE);
}else if(data.getIsReservation()==0){//不可以預訂
text_no_yuding.setVisibility(View.VISIBLE);
text_no_yuding.setEnabled(false);
iv_login.setEnabled(false);
iv_login.setVisibility(View.GONE);
}
tv_price.setText("¥" + data.getPrice().toString());
}
}
}
iv_login.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("View", "onClick: " + positon);
Log.i("View", "onClick: " + data.getCaravanId());
if (data.getIsMemberOnly() == 1) {//會員價格
if (!MyApplication.getInstance().getPreferencesUtils().getUserid().equals("")) {
iv_login.setEnabled(true);
//跳轉到房間詳情頁面
if (bundle == null) {
bundle = new Bundle();
}
bundle.putString("CaravanId", "" + data.getCaravanId());
bundle.putString("Name", name);
UIHelper.Go(mactivity, CapteHomeDetailsInfoActivity.class, bundle);
} else {
mactivity.SetCaravanId("" + data.getCaravanId());
mactivity.SetBreakfirst("" + data.getBreakfirst().toString());
mactivity.SetBedName("" + aCache.getStringInfos(data.getBed()));
mactivity.SetBed("" + data.getBed());
mactivity.SetName(name);
Intent intent = new Intent(mactivity, LoginActivity.class);
mactivity.startActivityForResult(intent, 1508);
}
} else {//不是會員 直接跳轉,如果登錄了就不能預訂了
//需要把房車編號傳遞給房間詳情頁
//跳轉到房間詳情頁面
if (!MyApplication.getInstance().getPreferencesUtils().getUserid().equals("")) {
iv_login.setEnabled(false);
} else {
iv_login.setEnabled(true);
if (bundle == null) {
bundle = new Bundle();
}
bundle.putString("Name", name);
bundle.putString("CaravanId", "" + data.getCaravanId());
UIHelper.GoFlag(MyApplication.context, CapteHomeDetailsInfoActivity.class, bundle);
}
}
}
});
ll_tv_1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.i("View", "onClick: " + positon);
Log.i("View", "onClick: " + data.getCaravanId());
//跳轉到房車詳情頁面
if (bundle == null) {
bundle = new Bundle();
}
bundle.putString("carvanid", "" + data.getCaravanId());
bundle.putString("homeText", "" +textHomename );
bundle.putString("mhomeText", "" + data.getName());
UIHelper.Go(campsiteOrderActivity, CapteDetailsActionsActivity.class, bundle);
}
});
}
}
/**
* 顯示隱藏item下面的條目
*
* @param view
* @param position
*/
public void changeImageVisable(View view, int position) {
// holder.ml_list_cars. getParent().requestDisallowInterceptTouchEvent(false);//請求父控件不要攔截事件
if (mLastView != null && mLastPosition != position) {
Holder holder = (Holder) mLastView.getTag();
switch (holder.ml_list_cars.getVisibility()) {
case View.VISIBLE:
holder.ml_list_cars.setVisibility(View.GONE);
mLastVisibility = View.GONE;
break;
default:
break;
}
}
mLastPosition = position;
mLastView = view;
Holder holder = (Holder) view.getTag();
switch (holder.ml_list_cars.getVisibility()) {
case View.GONE:
holder.ml_list_cars.setVisibility(View.VISIBLE);
mLastVisibility = View.VISIBLE;
break;
case View.VISIBLE:
holder.ml_list_cars.setVisibility(View.GONE);
mLastVisibility = View.GONE;
break;
}
}
class Holder {
TextView tv_car1;
TextView tv_price;
TextView tv_car2;
MyListView ml_list_cars;
ImageView iv_car_info;
private LinearLayout ll_contain;
ImageView iv_isMember;
}
}
<?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="match_parent"
android:focusable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
<LinearLayout
android:orientation="vertical"
android:id="@+id/ll_all"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="@color/white"
></LinearLayout>
<com.dplustours.b2c.View.view.InnerScrollView
android:id="@+id/scrollview"
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">
<LinearLayout
android:id="@+id/holder_container"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@color/login_line"
android:orientation="vertical">
<!-- app info -->
<!-- <include layout="@layout/layout_detail_app_info"/> -->
</LinearLayout>
</com.dplustours.b2c.View.view.InnerScrollView>
<!--<FrameLayout-->
<!--android:id="@+id/fl_buttonbotom"-->
<!--android:layout_width="match_parent"-->
<!--android:layout_height="55dp"></FrameLayout>-->
</LinearLayout>
建立model(處理業務邏輯,這裏指數據讀寫),先寫接口,後寫實現
[java] view plain copy print?
public interface IUserModel {
void setID(int id);
void setFirstName(String firstName);
void setLastName(String lastName);
int getID();
UserBean load(int id);// 通過id讀取user信息,返回一個UserBean
}
建立view(更新ui中的view狀態),這裏列出需要操作當前view的方法,也是接口
[java] view plain copy print?
public interface IUserView {
int getID();
String getFristName();
String getLastName();
void setFirstName(String firstName);
void setLastName(String lastName);
}
建立presenter(主導器,通過iView和iModel接口操作model和view),activity可以把所有邏輯給presenter處理,這樣java邏輯就從手機的activity中分離出來。
[java] view plain copy print?
public class UserPresenter {
private IUserView mUserView;
private IUserModel mUserModel;
public UserPresenter(IUserView view) {
mUserView = view;
mUserModel = new UserModel();
}
public void saveUser( int id, String firstName, String lastName) {
mUserModel.setID(id);
mUserModel.setFirstName(firstName);
mUserModel.setLastName(lastName);
}
public void loadUser( int id) {
UserBean user = mUserModel.load(id);
mUserView.setFirstName(user.getFirstName()); // 通過調用IUserView的方法來更新顯示
mUserView.setLastName(user.getLastName());
}
}
activity中實現iview接口,在其中操作view,實例化一個presenter變量。
[java] view plain copy print?
public class MainActivity extends Activity implements OnClickListener,IUserView {
UserPresenter presenter;
EditText id,first,last;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout. activity_main);
findViewById(R.id. save).setOnClickListener( this);
findViewById(R.id. load).setOnClickListener( this);
id = (EditText) findViewById(R.id. id);
first = (EditText) findViewById(R.id. first);
last = (EditText) findViewById(R.id. last);
presenter = new UserPresenter( this);
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id. save:
presenter.saveUser(getID(), getFristName(), getLastName());
break;
case R.id. load:
presenter.loadUser(getID());
break;
default:
break;
}
}
@Override
public int getID() {
return new Integer( id.getText().toString());
}
@Override
public String getFristName() {
return first.getText().toString();
}
@Override
public String getLastName() {
return last.getText().toString();
}
@Override
public void setFirstName(String firstName) {
first.setText(firstName);
}
@Override
public void setLastName(String lastName) {
last.setText(lastName);
}
}