|
package com.electric.chargingpile.fragment;
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.Toast;
import com.andview.refreshview.XRefreshView;
import com.electric.chargingpile.R;
import com.electric.chargingpile.adapter.ChatRecommendAdapter;
import com.electric.chargingpile.adapter.ChatRecommendItemDecoration;
import com.electric.chargingpile.application.MainApplication;
import com.electric.chargingpile.data.ChatRecommendBean;
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.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";
private View view;
private XRefreshView refreshView;
private ImageView iv_ask;
private RecyclerView recyclerView;
private ChatRecommendAdapter chatRecommendAdapter;
private StaggeredGridLayoutManager layoutManager;
private LinearLayout chat_share_info_remind;
private boolean isFirst = false;
private int page = 1;
@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() {
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;
ProfileManager.getInstance().setFirstComeIn(getActivity(), "label");
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(int position, int type) {
ToastUtil.showToast(getActivity().getApplicationContext(), "position:" + position + ",type:" + type, Toast.LENGTH_SHORT);
final int pos = position - 1;
final ArrayList<ChatRecommendBean> chatRecommendBeans = chatRecommendAdapter.getCurrentData();
if (!NetUtil.CheckNetwork(getActivity())) {
Toast.makeText(getActivity(), "请检查网络", Toast.LENGTH_SHORT).show();
return;
}
if (type == 2) {
}
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: // 推荐分享
// TODO
break;
}
}
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", "1");
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) {
refreshView.stopRefresh();
} else {
refreshView.stopLoadMore();
}
if (getActivity() != null) {
ToastUtil.showToast(getActivity().getApplicationContext(), "加载失败,请重试", Toast.LENGTH_SHORT);
}
}
@Override
public void onResponse(String response) {
String rtnCode = JsonUtils.getKeyResult(response, "code");
String rtnDesc = JsonUtils.getKeyResult(response, "desc");
if ("1000".equals(rtnCode)) {
String rtnData = JsonUtils.getKeyResult(response, "data");
ArrayList<ChatRecommendBean> topicData = (ArrayList<ChatRecommendBean>) JsonUtils.parseToObjectList(rtnData, ChatRecommendBean.class);
chatRecommendAdapter.setHeaderData(topicData);
requestData();
} else {
ToastUtil.showToast(getActivity().getApplicationContext(), rtnDesc, 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");
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) {
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();
}
String rtnCode = JsonUtils.getKeyResult(response, "code");
String rtnDesc = JsonUtils.getKeyResult(response, "desc");
if ("1000".equals(rtnCode)) {
String rtnData = JsonUtils.getKeyResult(response, "data");
ArrayList<ChatRecommendBean> chatRecommendBeans = (ArrayList<ChatRecommendBean>) JsonUtils.parseToObjectList(rtnData, 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(), rtnDesc, Toast.LENGTH_SHORT);
}
}
});
}
}
|