充电桩app代码

ChatRecommendFragment.java 16KB

    package com.electric.chargingpile.fragment; import android.content.Intent; import android.os.Bundle; import android.support.constraint.ConstraintLayout; import android.support.v4.app.Fragment; import android.support.v7.widget.RecyclerView; import android.support.v7.widget.StaggeredGridLayoutManager; import android.text.TextUtils; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.andview.refreshview.XRefreshView; import com.electric.chargingpile.R; import com.electric.chargingpile.activity.LoginActivity; import com.electric.chargingpile.activity.PublishItemsActivity; import com.electric.chargingpile.activity.TopicDetailActivity; import com.electric.chargingpile.activity.VideoDetaislActivity; import com.electric.chargingpile.adapter.ChatRecommendAdapter; import com.electric.chargingpile.adapter.ChatRecommendItemDecoration; import com.electric.chargingpile.adapter.TopicDetailAdapter; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.ChatBeanLab; import com.electric.chargingpile.data.ChatRecommendBean; import com.electric.chargingpile.iview.RecyclerItemTypeClickListener; import com.electric.chargingpile.manager.ProfileManager; import com.electric.chargingpile.util.CommonParams; import com.electric.chargingpile.util.JsonUtils; import com.electric.chargingpile.util.LoadingDialog; import com.electric.chargingpile.util.NetUtil; import com.electric.chargingpile.util.ToastUtil; import com.zhy.http.okhttp.OkHttpUtils; import com.zhy.http.okhttp.callback.StringCallback; import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import okhttp3.Call; public class ChatRecommendFragment extends Fragment implements View.OnClickListener { private static final String TAG = "ChatRecommendFragment"; public static final int CLICK_PUBLISH_BTN = 1010; private View view; private XRefreshView xRefreshView; private RecyclerView recyclerView; private ImageView iv_ask; private ChatRecommendAdapter chatRecommendAdapter; private StaggeredGridLayoutManager layoutManager; private ImageView chat_share_info_remind; public boolean isFirst = false; private int page = 1; private LoadingDialog loadingDialog; private ConstraintLayout noNetView; private TextView noNetTry; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.fragment_chat_recommend, null); initViews(); initListener(); return view; } private void initViews() { loadingDialog = new LoadingDialog(getContext()); loadingDialog.setCanceledOnTouchOutside(false); xRefreshView = view.findViewById(R.id.chat_x_refresh_view); xRefreshView.setPullLoadEnable(true); recyclerView = view.findViewById(R.id.recycler_view_test_rv); recyclerView.setHasFixedSize(true); noNetView = view.findViewById(R.id.noNetView); noNetTry = view.findViewById(R.id.noNetTry); iv_ask = view.findViewById(R.id.iv_ask); chat_share_info_remind = view.findViewById(R.id.chat_share_info_remind); String isFirstComeIn = ProfileManager.getInstance().getIsFirstComeIn(getActivity()); if (TextUtils.isEmpty(isFirstComeIn)) { isFirst = true; chat_share_info_remind.setVisibility(View.VISIBLE); } else { chat_share_info_remind.setVisibility(View.GONE); } chatRecommendAdapter = new ChatRecommendAdapter(getActivity()); layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE); recyclerView.setItemAnimator(null); recyclerView.setLayoutManager(layoutManager); recyclerView.addItemDecoration(new TopicDetailAdapter.ContentViewDecoration()); // 设置边距 recyclerView.setAdapter(chatRecommendAdapter); xRefreshView.setPinnedTime(0); xRefreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() { @Override public void onRefresh(boolean isPullDown) { page = 1; requestHeaderData(); } @Override public void onLoadMore(boolean isSilence) { page++; requestData(); } }); chatRecommendAdapter.setOnRecyclerItemClickListener(new RecyclerItemTypeClickListener() { @Override public void onItemClickListener(final int position, int type) { if (!NetUtil.CheckNetwork(getActivity())) { Toast.makeText(getActivity(), "请检查网络", Toast.LENGTH_SHORT).show(); return; } if (type == 2) { } // final ArrayList<ChatRecommendBean> beans = chatRecommendAdapter.getCurrentData(); // ChatRecommendBean bean = beans.get(position - 1); // if (bean.targetType == ChatRecommendBean.TARGET_TYPE_IMAGE_TOPIC) { // Intent intent = new Intent(getActivity(), TopicDetailActivity.class); // intent.putExtra("topicId", bean.targetId); // startActivity(intent); // } else { // Disposable disposable = Observable // .fromIterable(beans) // .filter(new Predicate<ChatRecommendBean>() { // @Override // public boolean test(ChatRecommendBean chatRecommendBean) throws Exception { // return chatRecommendBean.targetType != 25; // } // }).toList() // .subscribeOn(Schedulers.io()) // .observeOn(AndroidSchedulers.mainThread()) // .subscribe(new Consumer<List<ChatRecommendBean>>() { // @Override // public void accept(List<ChatRecommendBean> list) throws Exception { // ChatRecommendBean chatRecommendBean = beans.get(position - 1); // // int index = 0; // for (int i = 0; i < list.size(); i++) { // ChatRecommendBean tmp = list.get(i); // if (tmp.targetType == chatRecommendBean.targetType && // tmp.targetId == chatRecommendBean.targetId) { // index = i; // break; // } // } // // Intent intent = new Intent(getActivity(), VideoDetaislActivity.class); // intent.putExtra("list", (Serializable) list); // intent.putExtra("pos", index); // startActivity(intent); // // } // }); // } // TODO update by huyuguo Log.d(TAG, "onItemClickListener: position:" + position + ",type:" + type); } }); if (NetUtil.CheckNetwork(getContext())) { loadingDialog.show(); requestHeaderData(); // 该页面数据发起请求起点 } else { noNetView.setVisibility(View.VISIBLE); } } private void initListener() { iv_ask.setOnClickListener(this); noNetTry.setOnClickListener(this); recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { if (newState == RecyclerView.SCROLL_STATE_IDLE) { iv_ask.setVisibility(View.VISIBLE); if (isFirst) { chat_share_info_remind.setVisibility(View.VISIBLE); } } else if (newState == RecyclerView.SCREEN_STATE_ON) { iv_ask.setVisibility(View.GONE); if (isFirst) { chat_share_info_remind.setVisibility(View.GONE); } } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { super.onScrolled(recyclerView, dx, dy); } }); } @Override public void onClick(View view) { switch (view.getId()) { case R.id.iv_ask: // 推荐分享 if (MainApplication.isLogin()) { loginSign(); } else { startActivity(new Intent(getActivity().getApplicationContext(), LoginActivity.class)); ToastUtil.showToast(getActivity().getApplicationContext(), "请先登录", Toast.LENGTH_SHORT); } break; case R.id.noNetTry: if (NetUtil.CheckNetwork(getContext())) { noNetView.setVisibility(View.GONE); xRefreshView.startRefresh(); requestHeaderData(); } else { noNetView.setVisibility(View.VISIBLE); } break; } } // 服务器签名验证 private void loginSign() { String url = MainApplication.urlNew + "/topic/sign.do"; final Map<String, String> map = new HashMap<>(); map.put("fileNames", "android"); map.put("targetType", ChatRecommendBean.TARGET_TYPE_IMAGE_TEXT + ""); CommonParams.addCommonParams(map); loadingDialog.show(); OkHttpUtils.post().params(map).url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() { @Override public void onError(Call call, Exception e) { loadingDialog.dismiss(); ToastUtil.showToast(getContext(), e.getMessage(), Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { loadingDialog.dismiss(); String code = JsonUtils.getKeyResult(response, "code"); String desc = JsonUtils.getKeyResult(response, "desc"); if ("1000".equals(code)) { chat_share_info_remind.setVisibility(View.GONE); ProfileManager.getInstance().setFirstComeIn(getActivity(), "label"); startActivityForResult(new Intent(getActivity(), PublishItemsActivity.class), CLICK_PUBLISH_BTN); } else if ("8010".equals(code)) { startActivity(new Intent(getContext(), LoginActivity.class)); ToastUtil.showToast(getContext(), desc, Toast.LENGTH_LONG); } else { ToastUtil.showToast(getContext(), desc, Toast.LENGTH_SHORT); } } }); } private void requestHeaderData() { String url = MainApplication.urlNew + "/topic/list.do"; Map<String, String> map = new HashMap<>(); map.put("selected", "0"); CommonParams.addCommonParams(map); OkHttpUtils.get().params(map).url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() { @Override public void onError(Call call, Exception e) { loadingDialog.dismiss(); if (page == 1) { xRefreshView.stopRefresh(); } else { xRefreshView.stopLoadMore(); } if (getActivity() != null) { ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试:" + e.getMessage(), Toast.LENGTH_SHORT); } } @Override public void onResponse(String response) { String code = JsonUtils.getKeyResult(response, "code"); String desc = JsonUtils.getKeyResult(response, "desc"); if ("1000".equals(code)) { String data = JsonUtils.getKeyResult(response, "data"); ArrayList<ChatRecommendBean> topicData = (ArrayList<ChatRecommendBean>) JsonUtils.parseToObjectList(data, ChatRecommendBean.class); chatRecommendAdapter.setHeaderData(topicData); requestData(); } else { loadingDialog.dismiss(); ToastUtil.showToast(getActivity().getApplicationContext(), desc, Toast.LENGTH_SHORT); } } }); } private void requestData() { String url = MainApplication.urlNew + "/topic/info/list.do"; Map<String, String> map = new HashMap<>(); map.put("page", page + ""); map.put("limit", "20"); CommonParams.addCommonParams(map); OkHttpUtils.get().params(map).url(url).build().connTimeOut(6000).readTimeOut(6000).execute(new StringCallback() { @Override public void onError(Call call, Exception e) { loadingDialog.dismiss(); if (page == 1) { xRefreshView.stopRefresh(); } else { page--; xRefreshView.stopLoadMore(); } ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试:" + e.getMessage(), Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { loadingDialog.dismiss(); if (page == 1) { xRefreshView.stopRefresh(); } else { xRefreshView.stopLoadMore(); } String code = JsonUtils.getKeyResult(response, "code"); String desc = JsonUtils.getKeyResult(response, "desc"); if ("1000".equals(code)) { String data = JsonUtils.getKeyResult(response, "data"); ArrayList<ChatRecommendBean> chatRecommendBeans = (ArrayList<ChatRecommendBean>) JsonUtils.parseToObjectList(data, ChatRecommendBean.class); if (page == 1) { xRefreshView.setLoadComplete(false); chatRecommendAdapter.setData(chatRecommendBeans); if (chatRecommendBeans.size() == 0) { xRefreshView.setLoadComplete(true); chatRecommendAdapter.setFooterData(true); } else { chatRecommendAdapter.setFooterData(false); } } else { if (chatRecommendBeans.size() == 0) { xRefreshView.setLoadComplete(true); chatRecommendAdapter.setFooterData(true); } else { chatRecommendAdapter.setFooterData(false); chatRecommendAdapter.addData(chatRecommendBeans); } } } else { if (page == 1) { xRefreshView.stopRefresh(); } else { page--; xRefreshView.stopLoadMore(); } ToastUtil.showToast(getActivity().getApplicationContext(), desc, Toast.LENGTH_SHORT); } } }); } @Override public void onStop() { super.onStop(); ChatBeanLab.get(getContext()).clear(); } }