ContributionFragment.java 5.81 KB
package com.cnlive.goldenline.ui.fragment;

import android.graphics.Color;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v7.widget.LinearLayoutManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;

import com.cnlive.goldenline.R;
import com.cnlive.goldenline.api.CmsAPI;
import com.cnlive.goldenline.model.home.ContributionBean;
import com.cnlive.goldenline.model.home.ContributionPage;
import com.cnlive.goldenline.model.request.UserTopRequest;
import com.cnlive.goldenline.ui.adapter.ContributionListAdapter;
import com.cnlive.goldenline.ui.base.BaseFragment;
import com.cnlive.goldenline.ui.interfaces.RecyclerViewItemClickListener;
import com.cnlive.goldenline.ui.widget.pull2refresh.PullToRefreshLayout;
import com.cnlive.goldenline.ui.widget.pull2refresh.PullableRecyclerView;
import com.cnlive.goldenline.util.LogUtils;
import com.cnlive.goldenline.util.RestAdapterUtils;

import java.util.Collections;
import java.util.List;

import butterknife.BindView;
import butterknife.OnClick;
import retrofit.Callback;
import retrofit.RetrofitError;
import retrofit.client.Response;

/**
 * Description:直播-贡献榜
 * Created on 2017/3/13
 * Author : 萧
 */
public class ContributionFragment extends BaseFragment implements RecyclerViewItemClickListener<ContributionBean> {

    private static final String TAG = "ContributionFragment";

    @BindView(R.id.recyclerview_parent)
    FrameLayout layout_parent;
    @Nullable
    @BindView(R.id.list)
    PullableRecyclerView mReyclerView;
    @Nullable
    @BindView(R.id.pull_to_refresh)
    PullToRefreshLayout pullToRefreshLayout;

    @Nullable
    @BindView(R.id.empty_button)
    View empty_button;


    @Nullable
    @BindView(R.id.empty_load)
    View empty_load;

    @Nullable
    @BindView(R.id.empty)
    protected View mEmpty;

    private String liveId;


    private ContributionListAdapter adapter;

    public static ContributionFragment newInstance(String liveId) {
        ContributionFragment fragment = new ContributionFragment();
        Bundle bundle = new Bundle();
        bundle.putString("liveId", liveId);     //当前直播ID(私聊信息区分场次使用,填空时任意场次交互)
        fragment.setArguments(bundle);
        return fragment;
    }

    @Override
    public void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        liveId = getArguments().getString("liveId", "");
    }

    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        return super.onCreateView(inflater, container, savedInstanceState);
    }

    private int page = 1;

    @Override
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);

        layout_parent.setBackgroundColor(Color.parseColor("#00000000"));
        loadData();
        initRecyclerView();
    }

    private void loadData(){
        RestAdapterUtils.getRestAPI(CmsAPI.class).getusertop(new UserTopRequest(liveId, page), new Callback<ContributionPage>() {
            @Override
            public void success(ContributionPage findActBean, Response response) {
                if(findActBean.getCode()==0){
                    mEmpty.setVisibility(View.GONE);
                    List<ContributionBean> list = findActBean.getRecordList().getRows();
                    Collections.sort(list);
                    adapter.updateItems(list);
                    pullToRefreshLayout.refreshFinish(PullToRefreshLayout.SUCCEED);
                }else{
                    mEmpty.setVisibility(View.VISIBLE);
                    empty_button.setVisibility(View.VISIBLE);
                    empty_load.setVisibility(View.GONE);
                    pullToRefreshLayout.refreshFinish(PullToRefreshLayout.FAIL);
                    empty_button.setBackgroundResource(R.drawable.no_date);

                }
            }

            @Override
            public void failure(RetrofitError error) {
                mEmpty.setVisibility(View.VISIBLE);
                empty_button.setVisibility(View.VISIBLE);
                empty_button.setBackgroundResource(R.drawable.no_date);
                empty_load.setVisibility(View.GONE);
                pullToRefreshLayout.refreshFinish(PullToRefreshLayout.FAIL);
            }
        });
    }

    private void initRecyclerView() {
        pullToRefreshLayout.setPullUpEnable(false);
        pullToRefreshLayout.setPullDownEnable(true);
        pullToRefreshLayout.setOnPullListener(new PullToRefreshLayout.OnPullListener() {
            @Override
            public void onRefresh(PullToRefreshLayout pullToRefreshLayout) {
                loadData();
            }

            @Override
            public void onLoadMore(PullToRefreshLayout pullToRefreshLayout) {

            }
        });
        mReyclerView.setHasFixedSize(true);
        mReyclerView.setItemViewCacheSize(5);
        mReyclerView.setLayoutManager(new LinearLayoutManager(getAttchActivity()));
        adapter = new ContributionListAdapter(getAttchActivity());
        adapter.setItemClickListener(this);
        mReyclerView.setAdapter(adapter);
    }

    @Override
    protected int getLayoutRes() {
        return R.layout.fragment_layout_contribution;
    }

    @Override
    public void onItemClick(View view, ContributionBean t, int position, int eventType) {
        LogUtils.LOGE(TAG + " onItemClick position = " + position + " contributionBean = " + t);
    }

    @OnClick(R.id.empty_button)
    public void onClick(View view){
        loadData();
        mEmpty.setVisibility(View.VISIBLE);
        empty_load.setVisibility(View.VISIBLE);
        empty_button.setVisibility(View.GONE);
    }
}