SnsTopicFragment.java 5.3 KB
package com.dinhcv.lifelogpedometer.activity;

import android.content.Context;
import android.os.Bundle;
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.Button;

import com.dinhcv.lifelogpedometer.R;
import com.dinhcv.lifelogpedometer.adapter.SnsTopicAdapter;
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 java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit2.Callback;

/**
 * Created by Admin on 8/18/2017.
 */

public class SnsTopicFragment extends FragmentBase {
    private ApiService mService;
    private View mRootView;
    private RecyclerView mRcvRank;
    private SnsTopicAdapter mMainAdapter;
    private Button mBtnRecommendedGroup;
    private List<SnsTopicInfo> mSnsTopicList = new ArrayList<>();
    private SwipeRefreshLayout mSwipeRefreshTopic;

    private SnsFragment mSnsFragment;

    public void setRootFragment(SnsFragment frag) {
        this.mSnsFragment = frag;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflate the layout for this fragment
        mRootView = inflater.inflate(R.layout.fragment_sns_topic, container, false);
        ButterKnife.bind(this, mRootView);
        initView();
        initData();
        return mRootView;
    }

    @Override
    public void onAttach(Context context) {
        super.onAttach(context);
        Log.i("SonLT FR", "onAttach");
    }

    @Override
    public void onDetach() {
        super.onDetach();
        Log.i("SonLT FR", "onAttach");
    }

    @Override
    public void onPause() {
        super.onPause();
        Log.i("SonLT FR", "onPause");
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i("SonLT FR", "onResume");
    }

    @Override
    public void onStart() {
        super.onStart();
        Log.i("SonLT FR", "onStart");
    }

    @Override
    public void onStop() {
        super.onStop();
        Log.i("SonLT FR", "onStop");
    }

    private void initView() {
        mMainAdapter = new SnsTopicAdapter(getActivity(), mSnsTopicList);
        final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
        mRcvRank = (RecyclerView) mRootView.findViewById(R.id.rcv_topic);
        mRcvRank.setLayoutManager(mLayoutManager);
        mRcvRank.setAdapter(mMainAdapter);

        mBtnRecommendedGroup = (Button) mRootView.findViewById(R.id.btn_recommended_group);
        mBtnRecommendedGroup.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                mSnsFragment.showSnsSearchFragment();
            }
        });

        mSwipeRefreshTopic = (SwipeRefreshLayout) mRootView.findViewById(R.id.swipe_topic);
        mSwipeRefreshTopic.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
            @Override
            public void onRefresh() {
                getTopicList();
            }
        });
    }

    @OnClick(R.id.btn_my_group)
    public void showMyGroup(){
        mSnsFragment.showSnsMyGroupFragment();
    }

    /**
     * Init data
     */
    private void initData() {
        if (mSnsTopicList.size() == 0) {
            getTopicList();
        } else {

        }
    }

    private void getTopicList() {
        if (!mSwipeRefreshTopic.isRefreshing()) {
            mSwipeRefreshTopic.setRefreshing(true);
        }
        Map<String, String> map = new HashMap<>();
        map.put("token", APIResponse.getInstance().getToken());
        mService = ApiUtils.getApiService();
        mService.getSnsTopicList(map).enqueue(new Callback<SnsTopicResponse>() {
            @Override
            public void onResponse(retrofit2.Call<SnsTopicResponse> call, retrofit2.Response<SnsTopicResponse> response) {
                if (response.isSuccessful()) {
                    mSnsTopicList = response.body().getResult();
                    mMainAdapter.updateData(mSnsTopicList);
                    mMainAdapter.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<SnsTopicResponse> call, Throwable t) {
                Log.i("SonLT", "Success");
                if (mSwipeRefreshTopic.isRefreshing()) {
                    mSwipeRefreshTopic.setRefreshing(false);
                }
            }
        });
    }
}