|
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);
}
}
});
}
}
|