package com.dinhcv.lifelogpedometer.activity; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.AdapterView; import android.widget.ArrayAdapter; import android.widget.ImageView; import android.widget.Spinner; import android.widget.TextView; import com.dinhcv.lifelogpedometer.R; import com.dinhcv.lifelogpedometer.adapter.SnsMemberAdapter; import com.dinhcv.lifelogpedometer.adapter.SnsTopicAdapter; import com.dinhcv.lifelogpedometer.model.structure.pojo.ResultResponse; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsDetailInfo; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsMemberInfo; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsMyGroupInfo; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsTopicInfo; import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsTopicResponse; import com.dinhcv.lifelogpedometer.network.ApiService; import com.dinhcv.lifelogpedometer.network.ApiUtils; import com.dinhcv.lifelogpedometer.portal.APIResponse; import com.dinhcv.lifelogpedometer.utils.Debug; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map; import butterknife.BindView; import butterknife.ButterKnife; import butterknife.OnClick; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; /** * A simple {@link Fragment} subclass. */ public class SnsMyGroupFragment extends FragmentBase { private enum CurrentList { TOPIC_LIST, MEMBER_LIST, } ApiService mService; View mRootView; @BindView(R.id.spinner_my_group) Spinner mSpinnerMyGroup; @BindView(R.id.imv_spinner_my_group) ImageView mImvSpinnerMyGroup; @BindView(R.id.tv_title) TextView mTvTitle; @BindView(R.id.tv_goal) TextView mTvGoal; @BindView(R.id.tv_run_active_mode) TextView mTvRunAcivieMode; @BindView(R.id.tv_walk_active_mode) TextView mTvWalkAcivieMode; @BindView(R.id.tv_bike_active_mode) TextView mTvBikeAcivieMode; SwipeRefreshLayout mSwipeRefreshTopic; RecyclerView mRcvMemberList; private SnsTopicAdapter mTopicAdapter; private SnsMemberAdapter mMemberAdapter; private List mSnsTopicList = new ArrayList<>(); private List mSnsMyGroupList = new ArrayList<>(); private List mSnsMemberList = new ArrayList<>(); private SnsMyGroupInfo mSnsMyGroup; CurrentList mCurentList = CurrentList.TOPIC_LIST; public SnsMyGroupFragment() { // Required empty public constructor } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { // Inflate the layout for this fragment mRootView = inflater.inflate(R.layout.fragment_sns_my_group, container, false); ButterKnife.bind(this, mRootView); initView(); return mRootView; } public void initView() { mRcvMemberList = (RecyclerView) mRootView.findViewById(R.id.rcv_member); mSpinnerMyGroup = (Spinner) mRootView.findViewById(R.id.spinner_my_group); mSwipeRefreshTopic = (SwipeRefreshLayout) mRootView.findViewById(R.id.swipe_topic); mSwipeRefreshTopic.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { if (mCurentList == CurrentList.MEMBER_LIST) { if (mSnsMyGroup == null) return; mCurentList = CurrentList.MEMBER_LIST; mRcvMemberList.setAdapter(mMemberAdapter); mMemberAdapter.clearData(); mMemberAdapter.notifyDataSetChanged(); getMemberList(mSnsMyGroup); } else if (mCurentList == CurrentList.TOPIC_LIST) { mRcvMemberList.setAdapter(mTopicAdapter); mTopicAdapter.clearData(); mTopicAdapter.notifyDataSetChanged(); getTopicList(); } } }); mTopicAdapter = new SnsTopicAdapter(getActivity(), mSnsTopicList); mMemberAdapter = new SnsMemberAdapter(getActivity(), mSnsMemberList); final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity()); mRcvMemberList.setLayoutManager(mLayoutManager); mRcvMemberList.setAdapter(mTopicAdapter); getMyGroupList(); getTopicList(); } @OnClick(R.id.imv_spinner_my_group) public void showSpinnerMyGroup() { mSpinnerMyGroup.performClick(); } @OnClick(R.id.btn_show_member) public void showGroupMember() { if (mCurentList == CurrentList.TOPIC_LIST) { if (mSnsMyGroup == null) return; mCurentList = CurrentList.MEMBER_LIST; mRcvMemberList.setAdapter(mMemberAdapter); mMemberAdapter.clearData(); mMemberAdapter.notifyDataSetChanged(); getMemberList(mSnsMyGroup); } else if (mCurentList == CurrentList.MEMBER_LIST) { mCurentList = CurrentList.TOPIC_LIST; mRcvMemberList.setAdapter(mTopicAdapter); mTopicAdapter.clearData(); mTopicAdapter.notifyDataSetChanged(); getTopicList(); } } public void setDataSpinnerMyGroup() { List list = new ArrayList<>(); for (SnsMyGroupInfo info : mSnsMyGroupList) { list.add(info.getGroupName()); } ArrayAdapter dataAdapter = new ArrayAdapter<>(getContext(), android.R.layout.simple_spinner_item, list); dataAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); mSpinnerMyGroup.setAdapter(dataAdapter); mSpinnerMyGroup.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() { @Override public void onItemSelected(AdapterView parent, View view, int position, long id) { getSnsGroupDetail(mSnsMyGroupList.get(position)); //T.B.D mCurentList = CurrentList.TOPIC_LIST; mRcvMemberList.setAdapter(mTopicAdapter); } @Override public void onNothingSelected(AdapterView parent) { } }); } public void showDetailGroup(SnsDetailInfo detail) { if (detail != null) { mTvTitle.setText(detail.getGroupName()); mTvGoal.setText(detail.getGoal()); if (detail.getRunModeActive() == 1) { mTvRunAcivieMode.setVisibility(View.VISIBLE); } else { mTvRunAcivieMode.setVisibility(View.GONE); } if (detail.getWalkModeActive() == 1) { mTvWalkAcivieMode.setVisibility(View.VISIBLE); } else { mTvWalkAcivieMode.setVisibility(View.GONE); } if (detail.getBikeModeActive() == 1) { mTvBikeAcivieMode.setVisibility(View.VISIBLE); } else { mTvBikeAcivieMode.setVisibility(View.GONE); } } else { mTvTitle.setVisibility(View.INVISIBLE); mTvGoal.setVisibility(View.INVISIBLE); mTvRunAcivieMode.setVisibility(View.INVISIBLE); mTvWalkAcivieMode.setVisibility(View.INVISIBLE); mTvBikeAcivieMode.setVisibility(View.INVISIBLE); } } private void getMyGroupList() { showLoadingDialog(); Map map = new HashMap<>(); map.put("token", APIResponse.getInstance().getToken()); mService = ApiUtils.getApiService(); mService.getSnsMyGroup(map).enqueue(new Callback>() { @Override public void onResponse(retrofit2.Call> call, retrofit2.Response> response) { if (response.isSuccessful()) { mSnsMyGroupList = response.body().getResult(); setDataSpinnerMyGroup(); if (!mSnsMyGroupList.isEmpty()) { mSnsMyGroup = mSnsMyGroupList.get(0); getSnsGroupDetail(mSnsMyGroupList.get(0)); } else { dismissLoadingDialog(); } Log.i("SonLT", "Success" + mSnsTopicList.size()); } else { int statusCode = response.code(); // handle request errors depending on status code Log.i("SonLT", "Fail " + statusCode); dismissLoadingDialog(); } } @Override public void onFailure(retrofit2.Call> call, Throwable t) { Log.i("SonLT", "Success"); dismissLoadingDialog(); } }); } private void getSnsGroupDetail(SnsMyGroupInfo myGroup) { showLoadingDialog(); Map map = new HashMap<>(); map.put("token", APIResponse.getInstance().getToken()); int groupId = myGroup.getId(); mService = ApiUtils.getApiService(); mService.getSnsDetail(map, groupId).enqueue(new Callback>() { @Override public void onResponse(Call> call, Response> response) { if (response.isSuccessful()) { List mSnsDetailList = response.body().getResult(); if (mSnsDetailList != null) { if (mSnsDetailList.size() > 0) { SnsDetailInfo detailInfo = mSnsDetailList.get(0); showDetailGroup(detailInfo); } } Debug.normal("SonLT", "getSnsDetail isSuccessful"); } else { int statusCode = response.code(); // handle request errors depending on status code Debug.normal("SonLT", "getSnsDetail isFailure"); } dismissLoadingDialog(); } @Override public void onFailure(Call> call, Throwable t) { Debug.normal("SonLT", "getSnsDetail onFailure"); dismissLoadingDialog(); } }); } private void getTopicList() { if (!mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(true); } Map map = new HashMap<>(); map.put("token", APIResponse.getInstance().getToken()); mService = ApiUtils.getApiService(); mService.getSnsTopicList(map).enqueue(new Callback() { @Override public void onResponse(retrofit2.Call call, retrofit2.Response response) { if (response.isSuccessful()) { mSnsTopicList = response.body().getResult(); mTopicAdapter.updateData(mSnsTopicList); mTopicAdapter.notifyDataSetChanged(); Log.i("SonLT", "Success" + mSnsTopicList.size()); } else { int statusCode = response.code(); // handle request errors depending on status code Log.i("SonLT", "Fail " + statusCode); } if (mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(false); } } @Override public void onFailure(retrofit2.Call call, Throwable t) { Log.i("SonLT", "Success"); if (mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(false); } } }); } private void getMemberList(SnsMyGroupInfo myGroup) { if (!mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(true); } Map header = new HashMap<>(); header.put("token", APIResponse.getInstance().getToken()); mService = ApiUtils.getApiService(); mService.getSnsMember(header, myGroup.getId()).enqueue(new Callback>() { @Override public void onResponse(retrofit2.Call> call, retrofit2.Response> response) { if (response.isSuccessful()) { mSnsMemberList = response.body().getResult(); mMemberAdapter.updateData(mSnsMemberList); mMemberAdapter.notifyDataSetChanged(); Log.i("SonLT", "Success" + mSnsTopicList.size()); } else { int statusCode = response.code(); // handle request errors depending on status code Log.i("SonLT", "Fail " + statusCode); } if (mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(false); } } @Override public void onFailure(retrofit2.Call> call, Throwable t) { Log.i("SonLT", "Success"); if (mSwipeRefreshTopic.isRefreshing()) { mSwipeRefreshTopic.setRefreshing(false); } } }); } }