package net.coding.program.mall;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import net.coding.program.R;
import net.coding.program.common.BlankViewDisplay;
import net.coding.program.common.Global;
import net.coding.program.common.network.RefreshBaseFragment;
import net.coding.program.model.MallOrderObject;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.EFragment;
import org.androidannotations.annotations.FragmentArg;
import org.androidannotations.annotations.ViewById;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.concurrent.atomic.AtomicBoolean;
/**
* Created by libo on 2015/11/22.
*/
@EFragment(R.layout.fragment_mall_order_detail)
public class MallOrderDetailFragment extends RefreshBaseFragment {
@ViewById
ListView listView;
@ViewById
View blankLayout;
@ViewById
View list_footer;
@FragmentArg
Type mType;
private AtomicBoolean footerAdded = new AtomicBoolean(false);
ArrayList<MallOrderObject> mData = new ArrayList<>();
String mUrl;
View.OnClickListener onClickRetry = new View.OnClickListener() {
@Override
public void onClick(View v) {
onRefresh();
}
};
BaseAdapter mAdapter = new BaseAdapter() {
@Override
public int getCount() {
return mData.size();
}
@Override
public Object getItem(int position) {
return mData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
final ViewHolder holder;
if (convertView == null) {
view = LayoutInflater.from(getActivity())
.inflate(R.layout.mall_order_detail_item, parent, false);
holder = new ViewHolder();
holder.orderNo = (TextView) view.findViewById(R.id.order_no);
holder.goodImg = (ImageView) view.findViewById(R.id.order_img);
holder.goodTitle = (TextView) view.findViewById(R.id.order_title);
holder.count = (TextView) view.findViewById(R.id.order_point);
holder.pointCost = (TextView) view.findViewById(R.id.order_point);
holder.note = (TextView) view.findViewById(R.id.order_note);
holder.receiverName = (TextView) view.findViewById(R.id.order_receiver_name);
holder.receiverPhone = (TextView) view.findViewById(R.id.order_receiver_phone);
holder.status = (TextView) view.findViewById(R.id.order_status);
holder.express = (TextView) view.findViewById(R.id.order_express);
holder.time = (TextView) view.findViewById(R.id.order_time);
holder.receiverAddress = (TextView) view.findViewById(R.id.order_addr);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
MallOrderObject item = (MallOrderObject) getItem(position);
holder.orderNo.setText(item.getOrderNo());
long timeLong = item.getCreatedAt();
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String time = format.format(new Date(timeLong));
holder.time.setText(time);
String titleString;
if (item.getOptionName().isEmpty()) {
titleString = item.getName();
} else {
String titleFormat = "%s <font color=#666666><small>%s</small></font>";
titleString = String.format(titleFormat, item.getName(), item.getOptionName());
}
holder.goodTitle.setText(Html.fromHtml(titleString));
getImageLoad().loadImage(holder.goodImg, item.getGiftImage());
holder.pointCost.setText(item.getPointsCost() + " 码币");
if (item.getRemark().equals("")) {
holder.note.setText("暂无");
} else {
holder.note.setText(item.getRemark());
}
holder.receiverName.setText(item.getReceiverName());
holder.receiverPhone.setText(item.getReceiverPhone());
int status = item.getStatus();
switch (status) {
case 0:
holder.status.setText("未发货");
break;
case 1:
holder.status.setText("已发货");
break;
case 2:
holder.status.setText("已完成");
break;
}
String express = item.getExpressNo();
if (express.equals("")) {
holder.express.setText("暂无");
} else {
holder.express.setText(item.getExpressNo());
}
holder.receiverAddress.setText(item.getReceiverAddress());
if (position == (getCount() - 1)) {
loadMore();
}
return view;
}
};
@AfterViews
protected final void init() {
initRefreshLayout();
// mFootUpdate.init(listView, mInflater, this);
list_footer.setVisibility(View.GONE);
listView.setAdapter(mAdapter);
switch (mType) {
case un_send:
mUrl = Global.HOST_API + "/gifts/orders?";
break;
case already_send:
mUrl = Global.HOST_API + "/gifts/orders?";
break;
default: // 0
mUrl = Global.HOST_API + "/gifts/orders?";
break;
}
loadMore();
}
@Override
public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data)
throws JSONException {
setRefreshing(false);
hideProgressDialog();
if (tag.equals(mUrl)) {
if (code == 0) {
if (isLoadingFirstPage(tag)) {
mData.clear();
}
JSONArray jsonArray = respanse.optJSONObject("data").optJSONArray("list");
for (int i = 0; i < jsonArray.length(); ++i) {
JSONObject json = jsonArray.getJSONObject(i);
MallOrderObject orderObject = new MallOrderObject(json);
if (mType == Type.all_order) {
mData.add(orderObject);
} else if (mType == Type.already_send) {
if (orderObject.getStatus() == 1) {
mData.add(orderObject);
}
} else {
if (orderObject.getStatus() == 0) {
mData.add(orderObject);
}
}
}
// MallOrderObject orderObject = new MallOrderObject();
// orderObject.setCreatedAt(1448174663000L);
// orderObject.setExpressNo("expressNo");
// orderObject.setId(1);
// orderObject.setName("name");
// orderObject.setOrderNo("12312421");
// orderObject.setPointsCost(2.2);
// orderObject.setReceiverAddress("address");
// orderObject.setReceiverName("receiverName");
// orderObject.setReceiverPhone("123532424");
// orderObject.setRemark("remark");
// orderObject.setStatus(0);
// orderObject.setUserId(23424);
//
// mData.add(orderObject);
if (mData.size() != 0 && footerAdded.compareAndSet(false, true)) {
View footerView = LayoutInflater.from(getActivity()).inflate(
R.layout.mall_detail_list_footer, null);
listView.addFooterView(footerView, null, false);
}
// mFootUpdate.updateState(code, isLoadingLastPage(tag), mData.size());
String tip = BlankViewDisplay.OTHER_MALL_ORDER_BLANK;
if (mType == Type.already_send) {
tip = BlankViewDisplay.OTHER_MALL_ORDER_BLANK_ALREADYSEND;
} else if (mType == Type.un_send) {
tip = BlankViewDisplay.OTHER_MALL_ORDER_BLANK_ALREADYSEND;
}
BlankViewDisplay.setBlank(mData.size(), this, true, blankLayout, onClickRetry, tip);
mAdapter.notifyDataSetChanged();
} else {
showErrorMsg(code, respanse);
}
}
}
@Override
public void loadMore() {
if (!isLoadingFirstPage(mUrl) && !isLoadingLastPage(mUrl)) {
showDialogLoading();
}
getNextPageNetwork(mUrl, mUrl);
}
@Override
public void onRefresh() {
initSetting();
loadMore();
}
public enum Type {
all_order,
un_send,
already_send
}
class ViewHolder {
ImageView goodImg;
TextView orderNo;
TextView goodTitle;
TextView count;
TextView note;
TextView pointCost;
TextView receiverName;
TextView receiverPhone;
TextView status;
TextView express;
TextView time;
TextView receiverAddress;
}
}