package net.coding.program.user; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.TextView; import net.coding.program.R; import net.coding.program.common.Global; import net.coding.program.common.ui.BackActivity; import net.coding.program.common.widget.DataAdapter; import net.coding.program.mall.MallIndexActivity_; import net.coding.program.model.PointObject; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EActivity; import org.androidannotations.annotations.ViewById; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import se.emilsjolander.stickylistheaders.StickyListHeadersAdapter; import se.emilsjolander.stickylistheaders.StickyListHeadersListView; @EActivity(R.layout.activity_user_point) //@OptionsMenu(R.menu.menu_user_point) public class UserPointActivity extends BackActivity { private static final String TAG_HTTP_USER_POINT = "TAG_HTTP_USER_POINT"; private static final String TAG_HTTP_ALL_POINTS = "TAG_HTTP_ALL_POINTS"; @ViewById StickyListHeadersListView listView; TextView pointsAll; PointRecordAdapter adapter = new PointRecordAdapter(); @AfterViews protected final void initUserPointActivity() { View head = mInflater.inflate(R.layout.user_point_list_head, null); pointsAll = (TextView) head.findViewById(R.id.pointAll); head.findViewById(R.id.itemShop).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { // WebActivity_.intent(UserPointActivity.this) // .url(Global.HOST + "/shop") // .start(); MallIndexActivity_.intent(UserPointActivity.this).start(); } }); listView.addHeaderView(head, null, false); View footShade = mInflater.inflate(R.layout.divide_shade_up, null); listView.addFooterView(footShade, null, false); getNetwork(PointObject.getHttpPointsAll(), TAG_HTTP_ALL_POINTS); listView.setAdapter(adapter); getNextPageNetwork(PointObject.getHttpRecord(), TAG_HTTP_USER_POINT); listView.setAreHeadersSticky(false); } @Override public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException { if (tag.equals(TAG_HTTP_USER_POINT)) { if (code == 0) { JSONArray json = respanse.optJSONObject("data").optJSONArray("list"); ArrayList<PointObject> mData = new ArrayList<>(); for (int i = 0; i < json.length(); ++i) { mData.add(new PointObject(json.optJSONObject(i))); } adapter.appendDataUpdate(mData); } else { showErrorMsg(code, respanse); } } else if (tag.equals(TAG_HTTP_ALL_POINTS)) { if (code == 0) { double points = respanse.optJSONObject("data").optDouble("points_left"); pointsAll.setText(String.format("%.2f", points)); } else { showErrorMsg(code, respanse); } } } static class ViewHold { private TextView usage; private TextView pointsChange; private TextView create; private TextView pointsLeft; public ViewHold(View v) { usage = (TextView) v.findViewById(R.id.usage); pointsChange = (TextView) v.findViewById(R.id.pointsChange); create = (TextView) v.findViewById(R.id.create); pointsLeft = (TextView) v.findViewById(R.id.pointLeft); } public void bind(PointObject data) { usage.setText(Global.changeHyperlinkColor(data.getUsage(), 0xFF222222)); double points_change = data.getPoints_change(); String changeForamt; int textColor; if (data.isIncome()) { changeForamt = String.format("+%.2f", points_change); textColor = 0xff3bbd79; } else { changeForamt = String.format("-%.2f", points_change); textColor = 0xfffb8638; } pointsChange.setText(changeForamt); pointsChange.setTextColor(textColor); create.setText(Global.mDateYMDHH.format(data.getCreated_at())); pointsLeft.setText(String.format("余额: %.2f", data.getPoints_left())); } } private class PointRecordAdapter extends DataAdapter<PointObject> implements StickyListHeadersAdapter { @Override public View getView(int position, View convertView, ViewGroup parent) { ViewHold hold; if (convertView == null) { convertView = LayoutInflater.from(parent.getContext()) .inflate(R.layout.user_point_list_item, null); hold = new ViewHold(convertView); convertView.setTag(hold); } else { hold = (ViewHold) convertView.getTag(); } hold.bind((PointObject) getItem(position)); if (position == getCount() - 3) { getNextPageNetwork(PointObject.getHttpRecord(), TAG_HTTP_USER_POINT); } return convertView; } @Override public View getHeaderView(int i, View view, ViewGroup viewGroup) { LayoutInflater layoutInflater = LayoutInflater.from(viewGroup.getContext()); if (i == 0) { return layoutInflater.inflate(R.layout.divide_15_top_bottom, null); } else { return layoutInflater.inflate(R.layout.divide_0, null); } } @Override public long getHeaderId(int i) { if (i > 0) { return 1; } return i; } } }