package com.dazhongcun.merchants.fragment; import java.io.File; import java.util.List; import org.json.JSONObject; import com.afollestad.materialdialogs.MaterialDialog; import com.afollestad.materialdialogs.Theme; import com.dazhongcun.application.BaseApplication; import com.dazhongcun.baseactivity.BaseFragment; import com.dazhongcun.meifa.merchants.R; import com.dazhongcun.merchants.activity.HistoryActivity; import com.dazhongcun.merchants.application.AppApplication; import com.dazhongcun.merchants.database.BaseAppDbHelper; import com.dazhongcun.merchants.entity.MakeEntity; import com.dazhongcun.merchants.entity.Status; import com.dazhongcun.merchants.entity.UserEntity; import com.dazhongcun.merchants.user.BasicMember; import com.dazhongcun.merchants.user.LoginActivity; import com.dazhongcun.merchants.utils.FileUtils; import com.dazhongcun.merchants.utils.ParseJson; import com.dazhongcun.merchants.utils.RequestUri; import com.dazhongcun.utils.DownloadUtils; import com.dazhongcun.utils.StringUtils; import com.dazhongcun.views.Toaster; import com.dazhongcun.widget.FancyButton; import com.loopj.android.http.AsyncHttpResponseHandler; import com.loopj.android.http.RequestParams; import com.umeng.analytics.MobclickAgent; import roboguice.inject.InjectView; import android.app.Activity; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.os.AsyncTask; import android.os.Bundle; import android.os.Handler; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.DefaultItemAnimator; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.Button; import android.widget.ProgressBar; import android.widget.TextView; /** * 订单fragmetn * * @author LT * */ public class TaskFragment extends BaseFragment implements android.support.v4.widget.SwipeRefreshLayout.OnRefreshListener, OnClickListener { @InjectView(R.id.swipe_refresh) SwipeRefreshLayout layout; @InjectView(R.id.recycler_view) RecyclerView recyclerView; @InjectView(R.id.app_loading) View v; // @InjectView(R.id.empty) // View emp; @InjectView(R.id.edit_or_add) View moreView; @InjectView(R.id.storeID) Button storeID; boolean loading = false; private List<MakeEntity> makes; private RecyclerViewAdapter adapter; public int number = 1; public boolean loadFlag = false; private MsgReceiver updateListViewReceiver; private BaseAppDbHelper<UserEntity> dbHelper = new BaseAppDbHelper<UserEntity>(); @Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { return inflater.inflate(R.layout.fragment_task, null); } @Override public void onViewCreated(View view, Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); layout.setColorScheme(android.R.color.holo_red_light, android.R.color.holo_green_light, android.R.color.holo_blue_bright, android.R.color.holo_orange_light); layout.setOnRefreshListener(this); updateListViewReceiver = new MsgReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction("com.dazhongcun.activity.UPDATE_LISTVIEW"); getActivity().registerReceiver(updateListViewReceiver, intentFilter); if (LoginActivity.getLoginKey() == -1) { // 用户没有登录 跳转登录 Intent it = new Intent(); it.setAction(BaseApplication.EXIT_APP); getActivity().sendBroadcast(it); getActivity().startActivity(new Intent(getActivity(),LoginActivity.class)); getActivity().finish(); return; } moreView.setOnClickListener(this); recyclerView.setHasFixedSize(true); recyclerView.setItemAnimator(new DefaultItemAnimator()); // final LinearLayoutManager layoutManager = new // LinearLayoutManager(getActivity()); // layoutManager.setOrientation(LinearLayoutManager.VERTICAL); // recyclerView.setLayoutManager(layoutManager); final LinearLayoutManager layoutManager = new LinearLayoutManager( getActivity()); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new DividerItemDecoration(getActivity(), DividerItemDecoration.VERTICAL_LIST)); // LinearLayoutManager linearLayoutManager = new // LinearLayoutManager(getActivity()); // linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL); // recyclerView.setLayoutManager(linearLayoutManager); recyclerView.setOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { super.onScrollStateChanged(recyclerView, newState); } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { System.out.println(loadFlag); if (!loading && layoutManager.findLastVisibleItemPosition() == makes .size() - 1 && loadFlag) { loading = true; MakeEntity obj = new MakeEntity(); obj.setLoadtype(MakeEntity.LOADMORE); adapter.add(obj); // 去加载更多 loadMore(); } } }); // 查询数据库中的用户 UserEntity dblogin = new UserEntity(); dblogin = dbHelper.queryObjForEq(UserEntity.class, UserEntity.JSON_ID, LoginActivity.getLoginKey()); if (dblogin != null) { storeID.setText(String.format(getResources().getString(R.string.storeID), dblogin.getStoreid())); } getMakeDate(true); } private void loadMore() { RequestParams params = new RequestParams(); params.put(BasicMember.PARAMS_USERID, LoginActivity.getLoginKey() + ""); params.put(BasicMember.PARAMS_STATUS, 1 + ""); params.put(RequestUri.CODE, RequestUri.MAKE_CODE); params.put(BasicMember.PARAMS_PAGESIZE, BasicMember.size + ""); params.put(BasicMember.PARAMS_PAGENUMBER, (number += 1) + ""); System.out.println(RequestUri.BASE_URL + params.toString()); AppApplication.getHttpClient().get(RequestUri.BASE_URL, params, new AsyncHttpResponseHandler() { @Override public void onStart() { // 网络请求开始 } @Override @Deprecated public void onSuccess(String content) { parseJson(content, true); } @Override @Deprecated public void onFailure(Throwable error) { // 设置list的Emptyview number -= 1; adapter.remove(adapter.getItemCount() - 1); loading = false; loadFlag = false; Toaster.showOneToast("数据加载异常"); } @Override public void onFinish() { } }); } private void getMakeDate(final boolean refresh) { RequestParams params = new RequestParams(); params.put(BasicMember.PARAMS_USERID, LoginActivity.getLoginKey() + ""); params.put(BasicMember.PARAMS_STATUS, 1 + ""); params.put(RequestUri.CODE, RequestUri.MAKE_CODE); params.put(BasicMember.PARAMS_PAGESIZE, BasicMember.size + ""); params.put(BasicMember.PARAMS_PAGENUMBER, number); System.out.println(RequestUri.BASE_URL + params.toString()); // 不确定的dialog AppApplication.getHttpClient().get(RequestUri.BASE_URL, params, new AsyncHttpResponseHandler() { private boolean isSuc = false; @Override public void onStart() { // 网络请求开始 if (refresh) v.setVisibility(View.VISIBLE); } @Override @Deprecated public void onSuccess(String content) { parseJson(content, false); } @Override @Deprecated public void onFailure(Throwable error) { v.setVisibility(View.GONE); // 设置list的Emptyview layout.setRefreshing(false); } @Override public void onFinish() { v.setVisibility(View.GONE); } }); } private void parseJson(String json, boolean isload) { layout.setRefreshing(false); if (isload) { List<MakeEntity> more = ParseJson.getMakeEntityList(json); if (more != null) { if (more.size() == BasicMember.size) { loadFlag = true; } else { loadFlag = false; } adapter.remove(adapter.getItemCount() - 1); adapter.addAll(more); loading = false; // Toaster.showOneToast("数据添加"); } else { adapter.remove(adapter.getItemCount() - 1); Toaster.showOneToast("数据加载完成"); } } else { makes = ParseJson.getMakeEntityList(json); if (makes != null) { if (makes.size() == BasicMember.size) { loadFlag = true; } else { loadFlag = false; } if (makes.size() == 0) { MakeEntity obj = new MakeEntity(); obj.setLoadtype(MakeEntity.NODATA); makes.add(obj); } adapter = new RecyclerViewAdapter(getActivity(), makes, getActivity()); recyclerView.setAdapter(adapter); // if(makes.size() == 0){ // emp.setVisibility(View.VISIBLE); // }else{ // emp.setVisibility(View.GONE); // } } else { Status st = ParseJson.getStatus(json); Toaster.showOneToast(st.getMsg()); } } } @Override public void onRefresh() { new Handler().postDelayed(new Runnable() { @Override public void run() { number = 1; getMakeDate(false); } }, 1000); // getActivity().runOnUiThread(new Runnable() { // // @Override // public void run() { // number = 1; // getMakeDate(false); // new GetDataTask().execute(); // } // }); } private class GetDataTask extends AsyncTask<Void, Void, String> { @Override protected String doInBackground(Void... params) { // Simulates a background job. String result = null; RequestParams ps = new RequestParams(); ps.put(BasicMember.PARAMS_USERID, LoginActivity.getLoginKey() + ""); ps.put(BasicMember.PARAMS_STATUS, 1 + ""); ps.put(RequestUri.CODE, RequestUri.MAKE_CODE); ps.put(BasicMember.PARAMS_PAGESIZE, BasicMember.size + ""); ps.put(BasicMember.PARAMS_PAGENUMBER, number); System.out.println(RequestUri.BASE_URL + params.toString()); String url = RequestUri.BASE_URL + ps.toString(); File file = new File(AppApplication.mSdcardCache + File.separator + StringUtils.replaceUrlWithPlus(url)); if (file.exists() && file.isFile()) { file.delete(); } try { DownloadUtils.download(url, file, false, null); result = FileUtils.readTextFile(file); } catch (Exception e) { // TODO: handle exception // Logger.e("ContentListFragment", "下拉刷新", e); } return result; } @Override protected void onPostExecute(String result) { if (result != null) { parseJson(result, false); } // Call onRefreshComplete when the list has been refreshed. layout.setRefreshing(false); super.onPostExecute(result); } } @Override public void onClick(View v) { if (v.getId() == moreView.getId()) { startActivity(new Intent(getActivity(), HistoryActivity.class)); } } public void change(String position) { RequestParams params = new RequestParams(); params.put(BasicMember.PARAMS_USERID, LoginActivity.getLoginKey() + ""); params.put(BasicMember.PARAMS_STATUS, 4 + ""); params.put(BasicMember.PARAMS_OID, position); params.put(BasicMember.PARAMS_TYPE, 3 + ""); params.put(RequestUri.CODE, RequestUri.INFO_DONE); AppApplication.getHttpClient().get(RequestUri.BASE_URL, params, new AsyncHttpResponseHandler() { private boolean isSuc = false; @Override public void onStart() { // 网络请求开始 } @Override @Deprecated public void onSuccess(String content) { try { JSONObject json = new JSONObject(content); String code = json.optString(Status.JSON_STATUS); if ("0".equals(code)) { // 完成 getMakeDate(true); } else { Toaster.showOneToast("异常"); } } catch (Exception e) { } } @Override @Deprecated public void onFailure(Throwable error) { } @Override public void onFinish() { } }); } public class RecyclerViewAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { private final Context mContext; private List<MakeEntity> datas; public final Activity ac; public RecyclerViewAdapter(Context context, List<MakeEntity> datas, Activity ac) { mContext = context; this.datas = datas; this.ac = ac; } @Override public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { switch (viewType) { case MakeEntity.LOADMORE: View v = LayoutInflater.from(parent.getContext()).inflate( R.layout.load_more, parent, false); ProgressBar bar = (ProgressBar) v.findViewById(R.id.progress); return new RecyclerView.ViewHolder(v) { }; case MakeEntity.ITEM: View view = (View) LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item, parent, false); return new ListViewHolder(mContext, view, ac); case MakeEntity.NODATA: View nodata = (View) LayoutInflater.from(parent.getContext()) .inflate(R.layout.nodate, parent, false); return new RecyclerView.ViewHolder(nodata) { }; default: View views = (View) LayoutInflater.from(parent.getContext()) .inflate(R.layout.list_item, parent, false); return new ListViewHolder(mContext, views, ac); } } @Override public int getItemViewType(int position) { return datas.get(position).getLoadtype(); } @Override public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, final int position) { MakeEntity ent = datas.get(position); switch (ent.getLoadtype()) { case MakeEntity.LOADMORE: break; case MakeEntity.NODATA: break; case MakeEntity.ITEM: ListViewHolder viewHolders = (ListViewHolder) viewHolder; viewHolders.makeID .setText(String.format(mContext.getResources() .getString(R.string.makeID), ent.getId())); viewHolders.makeMan.setText(ent.getUserName()); viewHolders.makeType.setText(ent.getOutType()); viewHolders.makePhone.setText(ent.getMobile()); viewHolders.makeName.setText(ent.getStyListName()); viewHolders.makeTime.setText(ent.getOutTime()); viewHolders.makeDate.setText(ent.getOutdate()); viewHolders.makeCreateDate.setText(ent.getCreateDate()); viewHolders.done.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new MaterialDialog.Builder(ac) .title("确认订单") .content( "确定完成 " + String.format( mContext.getResources() .getString( R.string.makeID), getObj(position) .getId()) + " 该订单吗?") .theme(Theme.LIGHT) // the default is light, so you don't // need this line .positiveText(R.string.accept) // the default is 'Accept' .positiveColor( mContext.getResources().getColor( R.color.merchants_color)) .negativeText(R.string.decline) // leaving this // line out // will remove // the negative // button .callback(new MaterialDialog.Callback() { @Override public void onPositive(MaterialDialog dialog) { change(getObj(position).getId()); } @Override public void onNegative(MaterialDialog dialog) { dialog.dismiss(); } }).build().show(); } }); break; default: ListViewHolder viewHolderd = (ListViewHolder) viewHolder; viewHolderd.makeID .setText(String.format(mContext.getResources() .getString(R.string.makeID), ent.getId())); viewHolderd.makeMan.setText(ent.getUserName()); viewHolderd.makeType.setText(ent.getOutType()); viewHolderd.makePhone.setText(ent.getMobile()); viewHolderd.makeName.setText(ent.getStyListName()); viewHolderd.makeTime.setText(ent.getOutTime()); viewHolderd.makeDate.setText(ent.getOutdate()); viewHolderd.makeCreateDate.setText(ent.getCreateDate()); break; } } @Override public int getItemCount() { return datas.size(); } public void remove(int i) { datas.remove(i); notifyItemRemoved(i); } public void add(MakeEntity entitye) { this.datas.add(entitye); notifyItemInserted(datas.size() - 1); } public void addAll(List<MakeEntity> list) { this.datas.addAll(list); notifyDataSetChanged(); } public MakeEntity getObj(int position) { return datas.get(position); } public class ListViewHolder extends RecyclerView.ViewHolder { public View mTextView; private final Context mContext; private final Activity ac; public FancyButton makeID; public FancyButton done; public TextView makeMan; public TextView makeType; public TextView makePhone; public TextView makeName; public TextView makeTime; public TextView makeDate; public TextView makeCreateDate; public ListViewHolder(Context mCon, View v, Activity acd) { super(v); mTextView = v; mContext = mCon; this.ac = acd; this.makeID = (FancyButton) v.findViewById(R.id.makeID); this.makeID.setEnabled(false); this.makeMan = (TextView) v.findViewById(R.id.makeMan); this.makeType = (TextView) v.findViewById(R.id.makeType); this.makePhone = (TextView) v.findViewById(R.id.makePhone); this.makeName = (TextView) v.findViewById(R.id.makeName); this.makeTime = (TextView) v.findViewById(R.id.makeTime); this.makeDate = (TextView) v.findViewById(R.id.makedate); this.done = (FancyButton) v.findViewById(R.id.done); this.makeCreateDate = (TextView) v .findViewById(R.id.makeCreateDate); } } } public class MsgReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub number = 1; layout.setRefreshing(true); getMakeDate(false); } } public static final String TAG = "TaskFragment"; public void onResume() { super.onResume(); MobclickAgent.onPageStart(TAG); } public void onPause() { super.onPause(); MobclickAgent.onPageEnd(TAG); } @Override public void onDestroy() { getActivity().unregisterReceiver(updateListViewReceiver); super.onDestroy(); } }