swipeRefreshLayout 上拉加载 下拉刷新
2017-09-29 11:17
44 查看
Main
item
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 {
}
<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; } }
}
相关文章推荐
- listview下拉刷新、上拉加载(分页)
- [置顶] Android-PullToRefresh上拉下拉刷新加载更多,以及gridview刷新功能的Library下载地址
- PullRefreshGridView 下拉刷新,上拉加载
- web和webApp如何实现上拉加载和下拉刷新
- android 打造真正的下拉刷新上拉加载recyclerview(一):使用
- android 打造真正的下拉刷新上拉加载recyclerview(二):添加删除头尾部
- Android实战——改造PullToRefresh下拉刷新和上拉加载
- listView下拉刷新加载数据
- 从头开始swift2.0 仿乐乐医项目(五)上下拉刷新加载
- RecyclerView下拉刷新上拉加载
- 上拉加载,下拉刷新
- [Android学习系列15]下拉刷新列表实现动态加载
- RecycylerView 实现下拉刷新,上拉加载(简单版)
- 自定义控件: 万能下拉刷新及上拉加载控件SuperRefreshLayout-4
- iOS开发-ios7下拉刷新,上提加载快速集成
- vue2.0 移动端实现下拉刷新和上拉加载更多的示例
- 实现TableView的上拉加载和下拉刷新
- 微信小程序—两种方式实现上拉加载与下拉刷新
- 安卓---下拉刷新---上拉加载---解决导入library等自生成库文件失败的问题
- android基础知识----scrollview的上拉加载下拉刷新