package com.jaf.biubiu;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
import com.jaf.bean.BeanUser;
import com.jaf.bean.ResponseUser;
import com.jaf.jcore.AdapterWrapper;
import com.jaf.jcore.BindView;
import com.jaf.jcore.BindableFragment;
import com.jaf.jcore.Http;
import com.jaf.jcore.HttpCallBack;
import com.jaf.jcore.JacksonWrapper;
import org.json.JSONObject;
/**
* Created by jarrah on 2015/4/14.
*/
public class FragmentMe extends BindableFragment{
private static final String TAG = "Fragment Me";
BeanUser mBeanUser;
@BindView(id = R.id.meList)
private ListView mListView;
@BindView(id = R.id.percent)
private TextView mPercent;
@BindView(id = R.id.percentText)
private TextView mPercentText;
@BindView(id = R.id.progressBar)
private ProgressBar mProgressBar;
@BindView(id = R.id.getLikeCount)
private TextView mLikeCount;
private Adapter mAdapter;
public static Fragment newInstance(Bundle arg) {
return new FragmentMe();
}
@Override
protected int onLoadViewResource() {
return R.layout.fragment_me;
}
@Override
protected void onViewDidLoad(Bundle savedInstanceState) {
super.onViewDidLoad(savedInstanceState);
initUserInfo();
setupTop();
setupMeList();
requestUserInfo();
}
private void initUserInfo() {
mBeanUser = new BeanUser();
mBeanUser.setRank(0);
mBeanUser.setAnswerNum(0);
mBeanUser.setQuestionNum(0);
}
private void setupTop() {
if(mBeanUser == null) return;
mProgressBar.setProgress(mBeanUser.getRankRate());
mPercent.setText(mBeanUser.getRankRate() + "%");
mPercentText.setText(getString(R.string.userBeyondPercent, mBeanUser.getRankRate()));
mLikeCount.setText(String.valueOf(mBeanUser.getOtherLikeNum()));
}
private void setupMeList() {
mAdapter = new Adapter(getActivity());
mListView.setAdapter(mAdapter);
String qNum = mBeanUser == null ? "0" : String.valueOf(mBeanUser.getQuestionNum());
String aNum = mBeanUser == null ? "0" : String.valueOf(mBeanUser.getAnswerNum());
String unionNum = mBeanUser == null ? "0" : String.valueOf(mBeanUser.getUnionNum());
mAdapter.add(MeItem.newItem(getString(R.string.myQusestion), qNum));
mAdapter.add(MeItem.newItem(getString(R.string.myAnswer), aNum));
mAdapter.add(MeItem.newItem(getString(R.string.myUnion), unionNum));
}
@Override
public void onResume() {
super.onResume();
requestUserInfo();
}
private void requestUserInfo() {
Http http = new Http(TAG);
http.url(Constant.API).JSON(U.buildUser()).post(new HttpCallBack() {
@Override
public void onResponse(JSONObject response) {
super.onResponse(response);
ResponseUser responseUser = JacksonWrapper.json2Bean(response, ResponseUser.class);
if (responseUser != null) {
mBeanUser = responseUser.getReturnData();
if(mBeanUser == null) {
initUserInfo();
}
L.dbg(TAG + " " + response.toString());
setupTop();
setupMeList();
}
}
});
}
public static class Adapter extends AdapterWrapper<MeItem, View> {
public Adapter(Context context) {
super(context);
}
@Override
protected void onBindView(final int position, MeItem item, View view) {
TextView desc = (TextView) view.findViewById(R.id.meDesc);
TextView count = (TextView) view.findViewById(R.id.meCount);
desc.setText(item.text);
count.setText(item.count);
final boolean isQuestion = position == 0 ? true : false;
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(position != 2) {
ActivityMyQA.start((Activity) getContext(), ActivityMyQA.Extra.newExtra(isQuestion));
}
else {
ActivityMyUnion.start((Activity) getContext());
}
}
});
}
@Override
public View newView(int position, LayoutInflater lf, View convertView, ViewGroup parent) {
return lf.inflate(R.layout.item_me_desc, null);
}
}
public static class MeItem {
String text;
String count;
public static MeItem newItem(String text, String count) {
MeItem i = new MeItem();
i.text = text;
i.count = count;
return i;
}
}
}