充电桩app代码

TalkRecommendFragment.java 14KB

    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.LinearLayout; import android.widget.TextView; import android.widget.Toast; import com.andview.refreshview.XRefreshView; import com.andview.refreshview.XRefreshView.SimpleXRefreshListener; import com.electric.chargingpile.R; import com.electric.chargingpile.activity.PersonalPageActivity; import com.electric.chargingpile.activity.PublishItemsActivity; import com.electric.chargingpile.activity.TopicDetailsActivity; import com.electric.chargingpile.activity.VideoDetaislActivity; import com.electric.chargingpile.adapter.LayoutAdapter; import com.electric.chargingpile.application.MainApplication; import com.electric.chargingpile.data.Person; import com.electric.chargingpile.data.TalkRecommendBean; import com.electric.chargingpile.iview.RecyclerItemTypeClickListener; import com.electric.chargingpile.manager.ProfileManager; import com.electric.chargingpile.util.JsonUtils; 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 TalkRecommendFragment extends Fragment implements View.OnClickListener { RecyclerView recyclerView; LayoutAdapter layoutAdapter; List<Person> personList = new ArrayList<Person>(); XRefreshView xRefreshView; private View view; StaggeredGridLayoutManager layoutManager; private ImageView iv_ask; private LinearLayout share_info_icon; private static final String TAG = "TalkRecommendFragment"; private int page = 1; public void refreshList() { if (view == null) return; xRefreshView.startRefresh(); page = 1; requestHeaderData(); } boolean isFirst = false; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { view = inflater.inflate(R.layout.activity_talk_recommend_tj, null); initXRefreshView(); // 右下分享按钮及提示信息 share_info_icon = view.findViewById(R.id.share_info_icon); TextView shareInfoText = view.findViewById(R.id.share_info_text); shareInfoText.setAlpha(0.8f); ImageView shareInfoSanjiao = view.findViewById(R.id.share_info_sanjiao); shareInfoSanjiao.setAlpha(0.8f); String isFirstComeIn = ProfileManager.getInstance().getIsFirstComeIn(getActivity()); if (TextUtils.isEmpty(isFirstComeIn)) { isFirst = true; ProfileManager.getInstance().setFirstComeIn(getActivity(), "label"); view.findViewById(R.id.share_info_icon).setVisibility(View.VISIBLE); } initData(); layoutAdapter = new LayoutAdapter(getActivity()); // 设置静默加载模式 // xRefreshView1.setSilenceLoadMore(); layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); layoutManager.setGapStrategy(StaggeredGridLayoutManager.GAP_HANDLING_NONE); recyclerView.setItemAnimator(null); recyclerView.setLayoutManager(layoutManager); // 静默加载模式不能设置footerview recyclerView.setAdapter(layoutAdapter); // xRefreshView1.setAutoLoadMore(true); xRefreshView.setPinnedTime(1000); xRefreshView.setMoveForHorizontal(true); // adapter.setCustomLoadMoreView(new XRefreshViewFooter(getActivity())); // xRefreshView1.setPullLoadEnable(false); //设置静默加载时提前加载的item个数 // xRefreshView1.setPreLoadCount(2); xRefreshView.setXRefreshViewListener(new SimpleXRefreshListener() { @Override public void onRefresh(boolean isPullDown) { page = 1; requestHeaderData(); // requestData(); // new Handler().postDelayed(new Runnable() { // @Override // public void run() { // xRefreshView.stopRefresh(); // } // }, 2000); } @Override public void onLoadMore(boolean isSilence) { page++; requestData(); // new Handler().postDelayed(new Runnable() { // public void run() { // for (int i = 0; i < 6; i++) { // adapter.insert(new Person("More ", ""+ adapter.getAdapterItemCount()), // adapter.getAdapterItemCount()); // } // mLoadCount++; // if (mLoadCount >= 3) { // xRefreshView.setLoadComplete(true); // } else { // // 刷新完成必须调用此方法停止加载 // xRefreshView.stopLoadMore(); // } // } // }, 1000); } }); requestHeaderData(); // 顶部推荐话题点击事件 layoutAdapter.setOnRecyclerItemClickListener(new RecyclerItemTypeClickListener() { @Override public void onItemClickListener(int position, int type) { final int pos = position - 1; final ArrayList<TalkRecommendBean> talkRecommendBeans = layoutAdapter.getCurrentData(); if (!NetUtil.CheckNetwork(getActivity())) { Toast.makeText(getActivity(), "请检查网络", Toast.LENGTH_SHORT).show(); return; } if (type == 2) { startActivity(new Intent(getActivity(), PersonalPageActivity.class).putExtra("targetUserId", talkRecommendBeans.get(pos).addUserId + "")); return; } if (talkRecommendBeans.get(pos).targetType == 25) { startActivity(new Intent(getActivity(), TopicDetailsActivity.class).putExtra("topicId", talkRecommendBeans.get(pos).topicId + "")); } else { Disposable disposable = Observable .fromIterable(talkRecommendBeans) .filter(new Predicate<TalkRecommendBean>() { @Override public boolean test(TalkRecommendBean talkRecommendBean) throws Exception { return talkRecommendBean.targetType != 25; } }).toList() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<List<TalkRecommendBean>>() { @Override public void accept(List<TalkRecommendBean> list) throws Exception { TalkRecommendBean talkRecommendBean = talkRecommendBeans.get(pos); int index = 0; for (int i = 0; i < list.size(); i++) { TalkRecommendBean tmp = list.get(i); if (tmp.targetType == talkRecommendBean.targetType && tmp.targetId == talkRecommendBean.targetId) { index = i; break; } } Intent intent = new Intent(getActivity(), VideoDetaislActivity.class); intent.putExtra("list", (Serializable) list); intent.putExtra("pos", index); startActivity(intent); } }); } } }); initScrollListener(); return view; } private void initScrollListener() { recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() { @Override public void onScrollStateChanged(RecyclerView recyclerView, int newState) { //当前状态为停止滑动状态SCROLL_STATE_IDLE时 if (newState == RecyclerView.SCROLL_STATE_IDLE) { iv_ask.setVisibility(View.VISIBLE); if (isFirst) share_info_icon.setVisibility(View.VISIBLE); } else if (newState == RecyclerView.SCREEN_STATE_ON) { iv_ask.setVisibility(View.GONE); if (isFirst) share_info_icon.setVisibility(View.GONE); } } @Override public void onScrolled(RecyclerView recyclerView, int dx, int dy) { } }); } private void initXRefreshView() { xRefreshView = (XRefreshView) view.findViewById(R.id.xrefreshview); xRefreshView.setPullLoadEnable(true); recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view_test_rv); recyclerView.setHasFixedSize(true); iv_ask = (ImageView) view.findViewById(R.id.iv_ask); iv_ask.setOnClickListener(this); } private void initData() { for (int i = 0; i < 15; i++) { Person person = new Person("name" + i, "" + i); personList.add(person); } } @Override public void onClick(View v) { switch (v.getId()) { case R.id.iv_ask: startActivity(new Intent(getActivity(), PublishItemsActivity.class)); // Toast.makeText(getActivity(), "分享", Toast.LENGTH_SHORT).show(); break; } } public void setBottomBtnEnableVisible(boolean isVisible) { if (null == iv_ask) return; if (isVisible) iv_ask.setVisibility(View.VISIBLE); else iv_ask.setVisibility(View.GONE); } private void requestHeaderData() { String url = MainApplication.urlNew + "/topic/list.do"; Map<String, String> map = new HashMap<>(); map.put("selected", "0"); if (MainApplication.isLogin()) { map.put("user_id", MainApplication.userId); } 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) xRefreshView.stopRefresh(); else xRefreshView.setLoadComplete(true); if (getActivity() != null) { ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试", Toast.LENGTH_SHORT); } } @Override public void onResponse(String response) { String rtnCode = JsonUtils.getKeyResult(response, "code"); if ("1000".equals(rtnCode)) { String rtnMsg = JsonUtils.getKeyResult(response, "data"); ArrayList<TalkRecommendBean> qadata = (ArrayList<TalkRecommendBean>) JsonUtils.parseToObjectList(rtnMsg, TalkRecommendBean.class); layoutAdapter.setHeaderData(qadata); requestData(); } } }); } private void requestData() { String url = MainApplication.urlNew + "/topic/info/list.do"; // Log.e(TAG, "getQAData: "+url ); Map<String, String> map = new HashMap<>(); map.put("page", page + ""); if (MainApplication.isLogin()) { map.put("user_id", MainApplication.userId); } 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) xRefreshView.stopRefresh(); else xRefreshView.setLoadComplete(true); ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试", Toast.LENGTH_SHORT); } @Override public void onResponse(String response) { if (page == 1) xRefreshView.stopRefresh(); else xRefreshView.setLoadComplete(true); Log.e(TAG, "onResponse: " + response); String rtnCode = JsonUtils.getKeyResult(response, "code"); if ("1000".equals(rtnCode)) { String rtnMsg = JsonUtils.getKeyResult(response, "data"); ArrayList<TalkRecommendBean> qadata = (ArrayList<TalkRecommendBean>) JsonUtils.parseToObjectList(rtnMsg, TalkRecommendBean.class); if (page == 1) layoutAdapter.setData(qadata); else layoutAdapter.addData(qadata); Log.e(TAG, "onResponse: qadata" + qadata.size()); // Log.e(TAG, "onResponse01: "+datas.size() ); } else if ("02".equals(rtnCode)) { ToastUtil.showToast(getActivity().getApplicationContext(), "已经全部加载完毕", Toast.LENGTH_SHORT); } } }); } }