SnsSearchFragment.java 4.91 KB
package com.dinhcv.lifelogpedometer.activity;

import android.os.Bundle;
import android.support.v4.app.Fragment;
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 android.widget.EditText;
import android.widget.ProgressBar;

import com.dinhcv.lifelogpedometer.R;
import com.dinhcv.lifelogpedometer.adapter.SnsSearchAdapter;
import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsSearchInfo;
import com.dinhcv.lifelogpedometer.model.structure.pojo.SnsSearchResponse;
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.BindView;
import butterknife.ButterKnife;
import butterknife.OnClick;
import retrofit2.Callback;

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

public class SnsSearchFragment extends Fragment {
    private ApiService mService;

    private View mRootView;

    @BindView(R.id.rcv_search_result)
    RecyclerView mRcvSearch;
    SnsSearchAdapter mSearchAdapter;
    List<SnsSearchInfo> mSnsSearchList = new ArrayList<>();
    @BindView(R.id.edt_search_input)
    EditText mEdtSearchInput;
    @BindView(R.id.btn_search)
    Button mBtnSearch;
    @BindView(R.id.btn_create_group)
    Button mBtnCreateGroup;
    @BindView(R.id.pb_seaching)
    ProgressBar mPbSearcher;

    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_search, container, false);
        ButterKnife.bind(this, mRootView);
        initView();
        return mRootView;
    }

    private void initView() {
//        mRcvSearch = (RecyclerView) mRootView.findViewById(R.id.rcv_search_result);
//        mPbSearcher =(ProgressBar) mRootView.findViewById(R.id.pb_seaching);
//        mEdtSearchInput = (EditText) mRootView.findViewById(R.id.edt_search_input);
//        mBtnSearch = (Button) m

        mSearchAdapter = new SnsSearchAdapter(getActivity(), mSnsSearchList);
        final RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
        mRcvSearch.setLayoutManager(mLayoutManager);
        mRcvSearch.setAdapter(mSearchAdapter);
        mSearchAdapter.setOnItemClickListener(new SnsSearchAdapter.ItemClickListener() {
            @Override
            public void onItemClick(int position) {
                Log.i("SonLT", "Item in adapter clicked " + position);
                if ((mSnsFragment != null) && !mSnsSearchList.isEmpty()) {
                    mSnsFragment.showSnsDetailFragment(mSnsSearchList.get(position));
                }
            }
        });

        mPbSearcher.setVisibility(View.GONE);
        mBtnSearch.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                handlerSearchAction(mEdtSearchInput.getText().toString(), 0);
            }
        });
    }

    @OnClick(R.id.btn_create_group)
    public void createGroup(){
        mSnsFragment.showSnsCreateGroupFragment();
    }

    private void handlerSearchAction(String keyword, int page) {
        mPbSearcher.setVisibility(View.VISIBLE);
        mSearchAdapter.clearData();
        mSearchAdapter.notifyDataSetChanged();

        Map<String, String> map = new HashMap<>();
        map.put("token", APIResponse.getInstance().getToken());
        mService = ApiUtils.getApiService();
        mService.getSnsSearchList(map, keyword, page).enqueue(new Callback<SnsSearchResponse>() {
            @Override
            public void onResponse(retrofit2.Call<SnsSearchResponse> call, retrofit2.Response<SnsSearchResponse> response) {
                if (response.isSuccessful()) {
                    mSnsSearchList = response.body().getResult();
                    mSearchAdapter.updateData(mSnsSearchList);
                    mSearchAdapter.notifyDataSetChanged();
                    Log.i("SonLT", "Success" + mSnsSearchList.size());
                } else {
                    int statusCode = response.code();
                    // handle request errors depending on status code
                    Log.i("SonLT", "Fail " + statusCode);
                }

                mPbSearcher.setVisibility(View.GONE);
            }

            @Override
            public void onFailure(retrofit2.Call<SnsSearchResponse> call, Throwable t) {
                Log.i("SonLT", "Success");

                mPbSearcher.setVisibility(View.GONE);
            }
        });
    }
}