package net.coding.program.project.detail.merge; import android.support.v4.app.Fragment; import android.view.View; import net.coding.program.R; import net.coding.program.common.BlankViewDisplay; import net.coding.program.common.base.BaseLoadMoreFragment; import net.coding.program.model.Merge; import net.coding.program.model.ProjectObject; import org.androidannotations.annotations.AfterViews; import org.androidannotations.annotations.EFragment; import org.androidannotations.annotations.FragmentArg; import org.androidannotations.annotations.ItemClick; import org.androidannotations.annotations.ViewById; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; @EFragment(R.layout.common_refresh_listview) public class MergeListFragment extends BaseLoadMoreFragment { public static final int TYPE_OPEN = 0; public static final int TYPE_CLOSE = 1; public static final int RESULT_CHANGE = 1; private static final String HOST_MERGE = "HOST_MERGE"; @FragmentArg ProjectObject mProjectObject; @FragmentArg int mType; @FragmentArg ProjectObject.MergeExamine mMineType; @ViewById View blankLayout; private MergeAdapter mMergeAdapter; private String mUrlMerge; private View.OnClickListener onClickRetry = new View.OnClickListener() { @Override public void onClick(View v) { onRefresh(); loadMore(); } }; @AfterViews protected final void initMergeListFragment() { initRefreshLayout(); disableRefreshing(); if (mProjectObject.isPublic()) { mUrlMerge = mProjectObject.getHttpMerge(mType == TYPE_OPEN); } else { mUrlMerge = mProjectObject.getHttpMergeExamine(mType == TYPE_OPEN, mMineType); } mMergeAdapter = new MergeAdapter(new ArrayList<Merge>(), this, getImageLoad()); listView.setAdapter(mMergeAdapter); loadMore(); // showDialogLoading(); } @Override public void loadMore() { getNextPageNetwork(mUrlMerge, HOST_MERGE); } @ItemClick protected final void listView(Merge merge) { Fragment fragment = getParentFragment(); if (fragment == null) fragment = this; MergeDetailActivity_.intent(fragment).mMerge(merge).startForResult(RESULT_CHANGE); } @Override public void parseJson(int code, JSONObject respanse, String tag, int pos, Object data) throws JSONException { if (tag.equals(HOST_MERGE)) { // hideProgressDialog(); if (code == 0) { if (isLoadingFirstPage(HOST_MERGE)) { mMergeAdapter.clearData(); } JSONArray jsonArray = respanse.getJSONObject("data").getJSONArray("list"); ArrayList<Merge> parseData = new ArrayList<>(); for (int i = 0; i < jsonArray.length(); ++i) { parseData.add(new Merge(jsonArray.getJSONObject(i))); } mMergeAdapter.appendDataUpdate(parseData); } else { showErrorMsg(code, respanse); } updateLoadingState(code, tag, mMergeAdapter.getCount()); BlankViewDisplay.setBlank(mMergeAdapter.getCount(), this, code == 0, blankLayout, onClickRetry); } } @Override public void onRefresh() { initSetting(); } }