V4包下SwipeRefreshLayout使用(带上拉加载更多)
来源:互联网 发布:java中decode函数 编辑:程序博客网 时间:2024/06/05 11:17
1、布局文件:
<android.support.v4.widget.SwipeRefreshLayout android:id="@+id/swipeLayout" android:layout_width="match_parent" android:layout_height="match_parent" > <ListView android:id="@+id/id_lv" android:layout_width="match_parent" android:layout_height="wrap_content"></ListView> </android.support.v4.widget.SwipeRefreshLayout>
2、在代码中设置SwipeRefreshLayout的一些属性:
//设置刷新圈圈的颜色 swipeLayout.setColorSchemeResources(R.color.holo_blue_bright, R.color.holo_green_light, R.color.holo_orange_light, R.color.holo_red_light); //设置刷新圈圈的大小,可选SwipeRefreshLayout.LARGE或SwipeRefreshLayout.DEFAULT swipeLayout.setSize(SwipeRefreshLayout.DEFAULT); //刷新回调,可在里边放置网络操作,请求成功后调用swipeLayout.setRefreshing(false)方法即可让刷新圈圈消失 swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0); } }).start(); } });3、加载更多,其实就是监听Listview的滚动事件,监听到是最后一个条目时,就去加载显示更多的数据。
AbsListView.OnScrollListener OnScrollListenerOne = new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //当滚到最后一行且停止滚动时,执行加载 if (isLastItem && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE ) { //加载更多 isLastItem = false; //是否是最后一项 Toast.makeText(MainActivity.this,"加载更多",Toast.LENGTH_SHORT).show(); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //判断是否滚到最后一行 if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount > 0) { isLastItem = true; } } };
下边粘上全部代码:
package com.glodon.swiperefreshlayoutdemo;import android.os.Bundle;import android.os.Handler;import android.os.Message;import android.support.design.widget.FloatingActionButton;import android.support.design.widget.Snackbar;import android.support.v4.widget.SwipeRefreshLayout;import android.support.v7.app.AppCompatActivity;import android.support.v7.widget.Toolbar;import android.view.View;import android.widget.AbsListView;import android.widget.ListView;import android.widget.SimpleAdapter;import android.widget.Toast;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;public class MainActivity extends AppCompatActivity { private SwipeRefreshLayout swipeLayout; private ListView listview; private SimpleAdapter simpleAdapter; private boolean isLastItem = false;//是否是最后一项 private List<Map<String, Object>> mapList = new ArrayList<>(); private Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { super.handleMessage(msg); switch (msg.what){ case 0: swipeLayout.setRefreshing(false); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initData(); initView(); initRefreshView(); } private void initView() { Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); FloatingActionButton fab = (FloatingActionButton) findViewById(R.id.fab); fab.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Snackbar.make(view, "Replace with your own action", Snackbar.LENGTH_LONG) .setAction("Action", null).show(); } }); swipeLayout = (SwipeRefreshLayout)findViewById(R.id.swipeLayout); listview = (ListView)findViewById(R.id.id_lv); simpleAdapter = new SimpleAdapter(this, mapList, android.R.layout.simple_list_item_1, new String[]{"item"}, new int[]{android.R.id.text1}); listview.setAdapter(simpleAdapter); } //假数据 private void initData() { for (int i = 0; i < 25; i++) { Map<String, Object> map = new HashMap<>(); map.put("item", "item" + i); mapList.add(map); } } private void initRefreshView() { //设置刷新圈圈的颜色 swipeLayout.setColorSchemeResources(R.color.holo_blue_bright, R.color.holo_green_light, R.color.holo_orange_light, R.color.holo_red_light); //设置刷新圈圈的大小,可选SwipeRefreshLayout.LARGE或SwipeRefreshLayout.DEFAULT swipeLayout.setSize(SwipeRefreshLayout.DEFAULT); //刷新回调,可在里边放置网络操作,请求成功后调用swipeLayout.setRefreshing(false)方法即可让刷新圈圈消失 swipeLayout.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() { @Override public void onRefresh() { new Thread(new Runnable() { @Override public void run() { try { Thread.sleep(5000); } catch (InterruptedException e) { e.printStackTrace(); } handler.sendEmptyMessage(0); } }).start(); } }); listview.setOnScrollListener(OnScrollListenerOne); } /** * 上拉加载更多 */ AbsListView.OnScrollListener OnScrollListenerOne = new AbsListView.OnScrollListener() { @Override public void onScrollStateChanged(AbsListView view, int scrollState) { //当滚到最后一行且停止滚动时,执行加载 if (isLastItem && scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE ) { //加载更多 isLastItem = false; //是否是最后一项 Toast.makeText(MainActivity.this,"加载更多",Toast.LENGTH_SHORT).show(); } } @Override public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) { //判断是否滚到最后一行 if (firstVisibleItem + visibleItemCount == totalItemCount && totalItemCount > 0) { isLastItem = true; } } };}
0 0
- V4包下SwipeRefreshLayout使用(带上拉加载更多)
- 带上拉加载的SwipeRefreshLayout
- 带上拉加载的SwipeRefreshLayout
- 上拉加载更多,使用SwipeRefreshLayout
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- Android利用V4包中的SwipeRefreshLayout实现上拉加载
- 使用SwipeRefreshLayout实现下拉刷新与上拉加载更多
- 使用RecyclerView 和SwipeRefreshLayout实现上拉加载更多功能
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 让Android Support V4中的SwipeRefreshLayout支持上拉加载更多
- 自定义下拉刷新上拉加载更多(SwipeRefreshLayout)风格
- (4.1.44.2)实现上拉加载更多的SwipeRefreshLayout
- 下拉刷新SwipeRefreshLayout(加入上拉加载更多)
- LeetCode 142. Linked List Cycle II(循环链表)
- Android使用ActionBar搭建Android UI框架
- iOS压缩图片
- 二项式定理
- EXISTS与IN
- V4包下SwipeRefreshLayout使用(带上拉加载更多)
- 转载大家对《黑客与画家》的看法
- Rxjava+Retrofit 请求数据
- Android之进程和线程详解
- GPRS-PDP上下文的激活过程
- JS中的apply和call
- 位运算的应用
- 微信开发中当前网页窗口的JS代码
- mysql基本常用命令