|
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.TopicDetailActivity;
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(0);
// 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) {
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);
}
});
}
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);
}
}
});
}
}
|