RecycleView添加头部

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_36636969/article/details/80607930

项目中有用到RecycleView实现刷新功能,添加头部,功能终于实现了,记录一下(仍有待完善,各位看官,仅供参考)

首先是在一个activity里面使用fragment+viewPager实现功能需求activity界面布局;

首先activity layout布局:

<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:orientation="vertical">

        <LinearLayout
            android:layout_width="match_parent"
            android:orientation="vertical"
            android:layout_height="match_parent">
            <include layout="@layout/toolbar" />

            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:layout_marginTop="1dp"
                android:background="@color/white">

                <View style="@style/WidthAdaptive" />

                <com.flyco.tablayout.SlidingTabLayout
                    android:id="@+id/tablayout"
                    android:layout_width="0dp"
                    android:layout_height="match_parent"
                    android:layout_weight="2"
                    app:tl_indicator_color="@color/colorAccent"
                    app:tl_indicator_style="BLOCK"
                    app:tl_tab_space_equal="true"
                    app:tl_textAllCaps="true"
                    app:tl_textSelectColor="@color/colorText333"
                    app:tl_textUnselectColor="@color/colorText333"
                    app:tl_textsize="14sp" />

                <View style="@style/WidthAdaptive" />

            </LinearLayout>

      <android.support.v4.view.ViewPager
         android:id="@+id/viewPager"
                android:layout_width="match_parent"         android:layout_height="match_parent" />
        </LinearLayout>
    <com.gugu.gglc.widget.EmptyLayout
        android:id="@+id/emptylayout"
        android:visibility="gone"
     android:layout_width="match_parent"
    android:layout_height="match_parent" />
</FrameLayout>

activity代码:

package com.gugu.gglc.module.personal.invite_rewards;

import android.support.v4.app.Fragment;
import android.support.v4.content.ContextCompat;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.SwipeRefreshLayout;
import android.view.View;
import android.widget.TextView;


import com.flyco.tablayout.SlidingTabLayout;
import com.gugu.gglc.R;


import com.gugu.gglc.module.personal.invite_rewards.invite.InviteFragment;
import com.gugu.gglc.module.personal.invite_rewards.rewards.RewardsFragment;
import com.gugu.gglc.widget.EmptyLayout;
import com.jaydenxiao.common.base.BaseActivity;


import java.util.ArrayList;

import butterknife.BindView;


/**
 * 邀请奖励
 */
public class InviteRewardsActivity extends BaseActivity  {

    @BindView(R.id.tv_right)
    TextView tv_immediately_invited;

    @BindView(R.id.tablayout)
    SlidingTabLayout tablayout;

    @BindView(R.id.viewPager)
    ViewPager viewPager;

    @BindView(R.id.emptylayout)
    EmptyLayout emptylayout;

    private String[] titles = new String[]{"邀请记录", "奖励记录"};
    private ArrayList<Fragment> fragments = new ArrayList<>();
    private InviteFragment inviteFragment=new InviteFragment();
    private RewardsFragment rewardsFragment =new RewardsFragment();

    @Override
    public int getLayoutId() {
        return R.layout.activity_invite_rawards;
    }

    @Override
    public void initPresenter() {

    }

    @Override
    public void initView() {
        initToolbar("邀请奖励", true, false, null);
        initSet();
    }

    /**右边图标**/
    private void initSet() {
        tv_immediately_invited.setText("立即邀请");
        tv_immediately_invited.setTextColor(ContextCompat.getColor(this, R.color.orage_invite));
        fragments.add(inviteFragment);
        fragments.add(rewardsFragment);
        //设置数据
        tablayout.setViewPager(viewPager, titles, this, fragments);
        emptylayout.setVisibility(View.GONE);
    }

    protected void setStatus(){
        emptylayout.setVisibility(View.GONE);
    }

}

第一个fragment:

package com.gugu.gglc.module.personal.invite_rewards.invite;

import android.os.Bundle;
import android.support.v4.content.ContextCompat;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.widget.RecyclerView;
import android.view.View;
import android.widget.TextView;
import com.chad.library.adapter.base.BaseQuickAdapter;
import com.gugu.gglc.R;
import com.gugu.gglc.app.baseRecycleView.BaseLinearLayoutManager;
import com.gugu.gglc.bean.personal.InviteEntity;
import com.gugu.gglc.bean.personal.InviteRewardsEntity;
import com.gugu.gglc.constants.Global;
import com.gugu.gglc.widget.EmptyLayout;
import com.jaydenxiao.common.base.BaseFragment;
import com.jaydenxiao.common.commonutils.NetWorkUtils;


import butterknife.BindView;
import butterknife.OnClick;

/**
 * 邀请奖励
 */

public class InviteFragment extends BaseFragment<InvitePresenter, InviteModel>
        implements BaseQuickAdapter.RequestLoadMoreListener, InviteContract.View ,SwipeRefreshLayout.OnRefreshListener{

    @BindView(R.id.recyclerView)
    RecyclerView recyclerView;

    @BindView(R.id.swipeLayout)
    SwipeRefreshLayout swipeLayout;

    @BindView(R.id.emptylayout_fragment_base)
    EmptyLayout emptylayout;

    InviteAdapter mAdapter;
    private InviteRewardsEntity<InviteEntity> entityList;
    private int pageNo = 1;
    private TextView tv_invite_num,tv_investment_num;
    private String phone;
    private boolean mHidden;

    public static InviteFragment newInstance(Bundle args) {
        InviteFragment fragment = new InviteFragment();
        fragment.setArguments(args);
        return fragment;
    }

    @Override
    protected int getLayoutResource() {
        return R.layout.fragment_invite;
    }

    @Override
    public void initPresenter() {
        mPresenter.setVM(this, mModel);
    }

    @Override
    protected void initView() {
        if (!mHidden && isAdded()) {
        emptylayout.setVisibility(View.GONE);
        initApdater();
        phone= Global.getAccountInfo().getMobile();
        //获取信息
//        mPresenter.setInviteInfo(phone,pageNo,10);
            onRefresh();
        }
    }

    @Override
    public void onHiddenChanged(boolean hidden) {
        super.onHiddenChanged(hidden);
        mHidden=hidden;

    }

    private void initApdater() {
        swipeLayout.setOnRefreshListener(this);
        swipeLayout.setColorSchemeColors(ContextCompat.getColor(getContext(), R.color.text_blue_color),
                ContextCompat.getColor(getContext(), R.color.text_orange));
        recyclerView.setLayoutManager(new BaseLinearLayoutManager(getContext()));
        mAdapter = new InviteAdapter(null);
        mAdapter.setOnLoadMoreListener(this, recyclerView);
        mAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
        mAdapter.openLoadAnimation(BaseQuickAdapter.ALPHAIN);
        recyclerView.setAdapter(mAdapter);
        addHeaderVew();
    }

    @Override
    public void onRefresh() {
        //释放资源
        mAdapter.cancelAllTimers();
        pageNo = 1;
        mPresenter.setInviteInfo(phone,pageNo,10);
        //刷新就停止加载更多
        mAdapter.setEnableLoadMore(false);
        //获取数据
        swipeLayout.setRefreshing(false);
        mAdapter.setEnableLoadMore(true);
    }
    private void addHeaderVew() {
        View  view = View.inflate(mActivity, R.layout.intvite_header, null);
        tv_invite_num=view.findViewById(R.id.tv_invite_num);
        tv_investment_num=view.findViewById(R.id.tv_investment_num);

        mAdapter.addHeaderView(view);
    }


    @Override
    public void onLoadMoreRequested() {
        if (entityList.getList() != null &&
                !entityList.getList().isEmpty() &&
                entityList.isHasNext() ==true) {
            mPresenter.setInviteInfo(phone,pageNo,10);
        }
        if (!NetWorkUtils.isNetConnected(getContext()))
            mAdapter.loadMoreFail();

    }

    @Override
    public void getInviteInfo(InviteRewardsEntity<InviteEntity> inviteInfo) {

        if (inviteInfo !=null){
            entityList=inviteInfo;
        }else {
            entityList =new InviteRewardsEntity<InviteEntity>();
            int lenght=entityList.getList().size();
            entityList.getList().clear();
            mAdapter.notifyItemRangeRemoved(0,lenght);
            entityList.getList().addAll(inviteInfo.getList());
            mAdapter.notifyItemRangeInserted(lenght,inviteInfo.getList().size());

            emptylayout.setVisibility(View.VISIBLE);

        }
        String investmentNum=inviteInfo.getInvestmentCount();
        String inviteNum=inviteInfo.getRegistCount();
        if (investmentNum !=null) tv_investment_num.setText(investmentNum);
        else tv_invite_num.setText("0");
        if (inviteNum !=null) tv_invite_num.setText(inviteNum);
        else tv_invite_num.setText("0");

        if (pageNo == 1) {
            mAdapter.setNewData(entityList.getList());
        } else {
            mAdapter.addData(entityList.getList());
            mAdapter.loadMoreComplete();
        }
        if (entityList.isHasNext() ==true) {
            pageNo++;
        } else {
            mAdapter.loadMoreEnd();
        }


        //网络请求失败
        onRequestError();
        if (mAdapter.getItemCount() > 0) {
            emptylayout.setErrorType(EmptyLayout.HIDE_LAYOUT);
        } else {
            emptylayout.setErrorType(EmptyLayout.NODATA);
        }
    }

    private void onRequestError() {
        if (mAdapter.getItemCount() == 0)
            emptylayout.setErrorType(EmptyLayout.NETWORK_ERROR);
    }

    @Override
    public void isSuccess(boolean success) {isSuccess(success);

    }
    /** 点击刷新 **/
    @OnClick(R.id.emptylayout_fragment_base)
    void onEmptyClick() {
        emptylayout.setErrorType(EmptyLayout.NETWORK_LOADING);
        mPresenter.setInviteInfo(phone,pageNo,20);
    }

    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mAdapter != null) {
            //释放资源
            mAdapter.cancelAllTimers();
        }
    }

}

adapter侧代码:

package com.gugu.gglc.module.personal.invite_rewards.invite;

import android.content.Context;
import android.os.CountDownTimer;
import android.support.annotation.Nullable;
import android.support.v7.widget.RecyclerView;
import android.text.TextUtils;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import com.chad.library.adapter.base.BaseQuickAdapter;
import com.chad.library.adapter.base.BaseViewHolder;
import com.chad.library.adapter.base.entity.MultiItemEntity;
import com.gugu.gglc.R;
import com.gugu.gglc.bean.personal.InviteEntity;
import com.gugu.gglc.bean.personal.InviteRewardsEntity;

import java.util.ArrayList;
import java.util.List;


public class InviteAdapter extends BaseQuickAdapter<InviteEntity, BaseViewHolder> {
    private SparseArray<CountDownTimer> countDownMap;
    private Context context;

    public InviteAdapter(@Nullable List<InviteEntity> data) {
        super(R.layout.item_invite_list, data);
        countDownMap = new SparseArray<>();
    }

    @Override
    protected void convert(BaseViewHolder helper, InviteEntity item) {

        helper.setText(R.id.tv_invite_project_name, item.getInvitationMobile())
                .setText(R.id.tv_invite_project_userName, item.getInvitationName())
                .setText(R.id.tv_invite_project_Date, item.getRegistDate().substring(0, 10))
                .setText(R.id.tv_invite_project_time, item.getRegistDate().substring(10,19));
    }

    /**
     * 清空资源
     **/
    public void cancelAllTimers() {
        if (countDownMap == null) return;

        if (countDownMap.size() != 0) {
            for (int i = 0, length = countDownMap.size(); i < length; i++) {
                CountDownTimer cdt = countDownMap.get(countDownMap.keyAt(i));
                if (cdt != null) cdt.cancel();
            }
        }
    }
//    private MyViewHolder viewHolder;

//    public InviteAdapter(List<InviteEntity> listBeans, Context context) {
//        this.listBeans = listBeans;
//        this.context = context;
//        layoutInflater=LayoutInflater.from(context);
//    }
//    @Override
//    public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//        View view = layoutInflater.inflate(R.layout.item_invite_list,parent, false);
//        viewHolder= new MyViewHolder(view);
//        return viewHolder;
//
//    }
//
//    @Override
//    public void onBindViewHolder(MyViewHolder holder, int position) {
//            holder.tv_invite_project_name .setText(listBeans.get(position).getInvitationMobile());
//            holder.tv_invite_project_userName .setText(listBeans.get(position).getInvitationName());
//            holder.tv_invite_project_time .setText(listBeans.get(position).getRegistDate());
//    }
//
//    @Override
//    public long getItemId(int position) {
//        return position;
//    }
//
//    @Override
//    public int getItemCount() {
//        return listBeans.size();
//    }
//
//
//    class MyViewHolder extends RecyclerView.ViewHolder {
//        private TextView tv_invite_project_name,tv_invite_project_userName,tv_invite_project_time;
//
//
//
//        public MyViewHolder(View view) {
//            super(view);
//            tv_invite_project_name= view.findViewById(R.id.tv_invite_project_name);
//            tv_invite_project_userName= view.findViewById(R.id.tv_invite_project_userName);
//            tv_invite_project_time= view.findViewById(R.id.tv_invite_project_time);
//        }
//    }

}

猜你喜欢

转载自blog.csdn.net/qq_36636969/article/details/80607930