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