package com.jaf.biubiu; import android.app.Dialog; 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.Button; import com.jaf.bean.BeanMsgItem; import com.jaf.bean.ResponseMsgList; import com.jaf.jcore.AbsWorker; 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 com.jaf.jcore.NetworkListView; import com.jarrah.photo.PopupUtil; import org.json.JSONObject; import java.util.ArrayList; /** * Created by jarrah on 2015/4/14. */ public class FragmentMessage extends BindableFragment { @BindView(id = R.id.messageList) private NetworkListView<ViewMsgItem, BeanMsgItem> mListView; private com.jaf.jcore.AbsWorker.AbsLoader<com.jaf.biubiu.ViewMsgItem, com.jaf.bean.BeanMsgItem> loader; private Dialog mDialog; private static ArrayList<BeanMsgItem> mDataSource; public static Fragment newInstance(Bundle arg) { return new FragmentMessage(); } @Override protected int onLoadViewResource() { return R.layout.fragment_message; } @Override protected void onViewDidLoad(Bundle savedInstanceState) { super.onViewDidLoad(savedInstanceState); mDataSource = new ArrayList<>(); loader = new AbsWorker.AbsLoader<ViewMsgItem, BeanMsgItem>() { @Override public String parseNextUrl(JSONObject response) { return Constant.API; } @Override public JSONObject parseNextJSON(JSONObject response) { ResponseMsgList responseMsgList = JacksonWrapper.json2Bean( response, ResponseMsgList.class); if(responseMsgList.getReturnData() != null) { ArrayList<BeanMsgItem> data = responseMsgList.getReturnData() .getContData(); if (data.size() > 0) { int lastId = data.get(data.size() - 1).getUllId(); return U.buildMsgList(false, lastId); } } return null; } @Override public ArrayList<BeanMsgItem> parseJSON2ArrayList( JSONObject response) { ResponseMsgList responseMsgList = JacksonWrapper.json2Bean( response, ResponseMsgList.class); ArrayList<BeanMsgItem> contData = new ArrayList<>(); if (responseMsgList != null && responseMsgList.getReturnData() != null) { contData = responseMsgList.getReturnData().getContData(); } if(mListView.isLoadMore()) { mDataSource.addAll(contData); }else{ mDataSource.clear(); mDataSource.addAll(contData); } return contData; } @Override public void updateItemUI(final int position, final BeanMsgItem data, ViewMsgItem itemView) { itemView.setData(data); itemView.setOnLongClickListener(new DeleteClick(position, data)); } @Override public ViewMsgItem makeItem(LayoutInflater inflater, int position, View convertView, ViewGroup parent) { return new ViewMsgItem(getActivity()); } }; request(); mListView.setEmptyView(EmptyHelper.getEmptyView(getActivity(), R.drawable.bg_msg_empty, R.string.emptyMsg)); } private void request() { mListView.request(Constant.API, loader, U.buildMsgList(true, Integer.MAX_VALUE)); } public void refresh() { request(); } public class DeleteClick implements View.OnLongClickListener { private int position; private BeanMsgItem data; public DeleteClick(int position, BeanMsgItem data) { this.position = position; this.data = data; } @Override public boolean onLongClick(View v) { popup(data, position); return true; } public void popup(final BeanMsgItem data, final int position) { LayoutInflater lf = (LayoutInflater) getActivity() .getSystemService(Context.LAYOUT_INFLATER_SERVICE); View v = lf.inflate(R.layout.popup_report_question, null); Button btnOK = (Button) v.findViewById(R.id.btnOK); btnOK.setText(R.string.delete); btnOK.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { mDataSource.remove(position); L.dbg("on delete click : remove"); mListView.setAdapterData(mDataSource, false); mDialog.dismiss(); Http http = new Http(); http.url(Constant.API) .JSON(U.buildDelete(data.getUllId())) .post(new HttpCallBack() { @Override public void onResponse(JSONObject response) { super.onResponse(response); L.dbg("delete success :" + response); // request(); } }); } }); v.findViewById(R.id.btnCancel).setOnClickListener( new View.OnClickListener() { @Override public void onClick(View v) { mDialog.dismiss(); } }); mDialog = PopupUtil.makePopup(getActivity(), v); mDialog.show(); } } }