充电桩app代码

ChatRecommendFragment.java 15KB

    package com.electric.chargingpile.fragment; import android.content.Intent; import android.os.Bundle; 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.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.TopicDetailsActivity; import com.electric.chargingpile.activity.VideoDetaislActivity; import com.electric.chargingpile.adapter.ChatRecommendAdapter; import com.electric.chargingpile.adapter.ChatRecommendItemDecoration; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.AuthSignBean; import com.electric.chargingpile.data.ChatRecommendBean; import com.electric.chargingpile.data.TalkRecommendBean; import com.electric.chargingpile.iview.RecyclerItemTypeClickListener; import com.electric.chargingpile.manager.ProfileManager; import com.electric.chargingpile.util.Bimp; 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.io.Serializable; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import io.reactivex.Observable; import io.reactivex.android.schedulers.AndroidSchedulers; import io.reactivex.disposables.Disposable; import io.reactivex.functions.Consumer; import io.reactivex.functions.Predicate; import io.reactivex.schedulers.Schedulers; 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 refreshView; private ImageView iv_ask; private RecyclerView recyclerView; private ChatRecommendAdapter chatRecommendAdapter; private StaggeredGridLayoutManager layoutManager; private ImageView chat_share_info_remind; public boolean isFirst = false; private int page = 1; private LoadingDialog loadingDialog; @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); refreshView = view.findViewById(R.id.chat_x_refresh_view); refreshView.setPullLoadEnable(true); recyclerView = view.findViewById(R.id.recycler_view_test_rv); recyclerView.setHasFixedSize(true); 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 ChatRecommendItemDecoration()); // 静默加载模式不能设置footerview recyclerView.setAdapter(chatRecommendAdapter); // refreshView.setPinnedTime(1000); // refreshView.setMoveForHorizontal(true); refreshView.setXRefreshViewListener(new XRefreshView.SimpleXRefreshListener() { @Override public void onRefresh(boolean isPullDown) { page = 1; requestHeaderData(); } @Override public void onLoadMore(boolean isSilence) { page++; requestData(); } }); refreshView.startRefresh(); requestHeaderData(); // 该页面数据发起请求起点 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) { startActivity(new Intent(getActivity(), TopicDetailsActivity.class).putExtra("topicId", bean.topicId + "")); } 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); } }); } private void initListener() { iv_ask.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; } } // 服务器签名验证 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); } } }); } public void refreshList() { if (view == null) return; refreshView.startRefresh(); page = 1; requestHeaderData(); } 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) { if (page == 1) { refreshView.stopRefresh(); } else { refreshView.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 { 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) { if (page == 1) { refreshView.stopRefresh(); } else { refreshView.stopLoadMore(); } ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试:" + e.getMessage(), Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { if (page == 1) { refreshView.stopRefresh(); } else { refreshView.stopLoadMore(); } // Log.d(TAG, "onResponse: " + 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> chatRecommendBeans = (ArrayList<ChatRecommendBean>) JsonUtils.parseToObjectList(data, ChatRecommendBean.class); if (page == 1) { refreshView.setLoadComplete(false); chatRecommendAdapter.setData(chatRecommendBeans); } else { chatRecommendAdapter.addData(chatRecommendBeans); } if (chatRecommendBeans.size() == 0) { refreshView.setLoadComplete(true); } } else { ToastUtil.showToast(getActivity().getApplicationContext(), desc, Toast.LENGTH_SHORT); } } }); } }