swipeRefreshLayout 上拉加载 下拉刷新

Main

 <android.support.v4.widget.SwipeRefreshLayout
        android:layout_width="match_parent"
        android:id="@+id/swipe"
        android:layout_height="match_parent">

        <android.support.v7.widget.RecyclerView
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:id="@+id/recycle"></android.support.v7.widget.RecyclerView>

    </android.support.v4.widget.SwipeRefreshLayout>

item

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/tv"
        android:layout_gravity="center"
        android:textSize="16sp"
        android:text="haahha"/>

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="1dp"
        android:background="#8080"/>
</LinearLayout>

Main:

package test.bwie.com.lianximvp;

import android.os.Handler;
import android.service.autofill.Dataset;
import android.support.v4.widget.SwipeRefreshLayout;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import android.widget.Toast;

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

public class MainActivity extends AppCompatActivity {

List<String> list= new ArrayList<>();

private SwipeRefreshLayout  swipeRefreshLayout;
private RecyclerView recyclerView;
private Myadater myadater;
private LinearLayoutManager linearLayoutManager;
private int lastVisibleItem;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    swipeRefreshLayout = (SwipeRefreshLayout) findViewById(R.id.swipe);
    recyclerView = (RecyclerView) findViewById(R.id.recycle);

    //创建数据
    for(int  i = 0 ; i < 20 ;i ++){
        list.add("第"+i+"条数据");
    }

    linearLayoutManager = new LinearLayoutManager(this);
    recyclerView.setLayoutManager(linearLayoutManager);
    myadater = new Myadater();
    recyclerView.setAdapter(myadater);



    swipeRefreshLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
        @Override
        public void onRefresh() {
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    List<String> newDatas = new ArrayList<String>();
                    for(int j = 0 ; j < 5; j++){
                        int index = j + 1;
                        newDatas.add("new item" + index);
                    }
                    myadater.addItem(newDatas);
                    swipeRefreshLayout.setRefreshing(false);
                    Toast.makeText(MainActivity.this, "更新了", Toast.LENGTH_SHORT).show();
                }
            },3000);
        }
    });

    //下拉加载

    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {
        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            int  i =    linearLayoutManager.findFirstVisibleItemPosition();
            if(newState ==RecyclerView.SCROLL_STATE_IDLE && lastVisibleItem + 1 ==myadater.getItemCount()){
              new Handler().postDelayed(new Runnable() {
                  @Override
                  public void run() {
                      List<String> newDatas = new ArrayList<String>();
                      for (int i = 0; i< 5; i++) {
                          int index = i +1;
                          newDatas.add("more item" + index);
                      }
                      myadater.addMore(newDatas);
                      myadater.notifyDataSetChanged();
                  }
              },2000);
            }
        }
        @Override
        public void onScrolled(RecyclerView recyclerView, int dx, int dy) {
            super.onScrolled(recyclerView,dx, dy);
            lastVisibleItem =linearLayoutManager.findLastVisibleItemPosition();
        }

    });

}




class  Myadater extends RecyclerView.Adapter<Myadater.ViewHolder>{
    private static final int TYPE_ITEM =0;  //普通Item View

    private static final int TYPE_FOOTER = 1;  //顶部FootView
    @Override
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {

        return new ViewHolder(LayoutInflater.from(MainActivity.this).inflate(R.layout.item,parent,false));
    }

    @Override
    public void onBindViewHolder(ViewHolder holder, int position) {
        holder.text.setText(list.get(position));
    }

    @Override
    public int getItemCount() {
        return list!=null?list.size():0;
    }

    class ViewHolder extends RecyclerView.ViewHolder{

        TextView text;
        public ViewHolder(View itemView) {
            super(itemView);
            text =(TextView) itemView.findViewById(R.id.tv);
        }
    }

    class Hander extends RecyclerView.ViewHolder{

        TextView t;
        public Hander(View itemView) {
            super(itemView);
            t = itemView.findViewById(R.id.tv1);
        }
    }

    //   下拉刷新
    public void addItem(List<String> newDatas){
        newDatas.addAll(list);
        list.removeAll(list);
        list.addAll(newDatas);
        notifyDataSetChanged();
    }

    //  上拉加载
    public void addMore(List<String>  Dataset){

        list.addAll(Dataset);
        notifyDataSetChanged();
    }


    @Override
    public int getItemViewType(int position) {
        if(position + 1  ==getItemCount()){
            return TYPE_FOOTER;
        }
        return TYPE_ITEM;
    }


}

}
这里写图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值