当前位置: 首页 > 编程笔记 >

Android实战教程第四十三篇之上拉加载与下拉刷新

欧阳昊焱
2023-03-14
本文向大家介绍Android实战教程第四十三篇之上拉加载与下拉刷新,包括了Android实战教程第四十三篇之上拉加载与下拉刷新的使用技巧和注意事项,需要的朋友参考一下

ListView的下拉刷新很常见,很多开源的框架都能做到这个效果,当然也可以自己去实现。本篇案例是基于xlistview的。

布局:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
 xmlns:tools="http://schemas.android.com/tools" 
 android:layout_width="match_parent" 
 android:layout_height="match_parent" > 
 
 <me.maxwin.view.XListView 
  android:id="@+id/xlv" 
  android:layout_width="match_parent" 
  android:layout_height="match_parent" /> 
 
</RelativeLayout> 

主活动的代码:

package com.itydl.xlistviewdemo; 
 
import java.text.SimpleDateFormat; 
import java.util.ArrayList; 
import java.util.Date; 
import java.util.List; 
 
import me.maxwin.view.XListView; 
import me.maxwin.view.XListView.IXListViewListener; 
import android.app.Activity; 
import android.graphics.Color; 
import android.os.Bundle; 
import android.os.Handler; 
import android.os.Message; 
import android.os.SystemClock; 
import android.view.View; 
import android.view.ViewGroup; 
import android.widget.BaseAdapter; 
import android.widget.TextView; 
 
public class MainActivity extends Activity { 
 
 private XListView mXListView; 
 List<String> datas = new ArrayList<String>(); 
 private MyAdapter adapter; 
 private boolean isLoadMore;//是否正在加载更多数据的标记 
  
 private long preTime;//上一次刷新的当前系统时间毫秒值 
 private Handler handler = new Handler(){ 
  public void handleMessage(android.os.Message msg) { 
   if(isLoadMore){ 
    //消息是上拉加载更多 
    initDatas(); 
    isLoadMore = false; 
    //刷新完毕,关闭上拉加载效果 
    mXListView.stopLoadMore(); 
   }else{ 
    //消息是下拉刷新 
    datas.clear(); 
    initDatas(); 
    //刷新完毕,关闭下拉刷新效果 
    mXListView.stopRefresh(); 
   } 
   // 刷新listview 
   adapter.notifyDataSetChanged(); 
  }; 
 }; 
 
 @Override 
 protected void onCreate(Bundle savedInstanceState) { 
  super.onCreate(savedInstanceState); 
  setContentView(R.layout.activity_main); 
  initDatas(); 
  mXListView = (XListView) findViewById(R.id.xlv); 
  //设置适配器到ListView 
  adapter = new MyAdapter(); 
  mXListView.setAdapter(adapter); 
  initListener(); 
 } 
  
 private void initListener() { 
  //设置可以下拉刷新,默认就是true 
  mXListView.setPullRefreshEnable(true); 
   
  //设置可以上拉加载,默认是false 
  mXListView.setPullLoadEnable(true); 
   
  mXListView.setXListViewListener(new IXListViewListener() { 
    
   @Override 
   public void onRefresh() { 
    // 下拉刷新,实际发送Handler 
    //发送一个空消息,延迟两秒后告知刷新数据 
    handler.sendMessageDelayed(Message.obtain(), 2000); 
    //添加上一次刷新的时间: 
    if(preTime != 0){ 
     mXListView.setRefreshTime(refreshData(preTime)); 
    } 
    preTime = System.currentTimeMillis(); 
   } 
 
   private String refreshData(long preTime) { 
    return new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(new Date(preTime)); 
   } 
 
   @Override 
   public void onLoadMore() { 
    //标记正在加载更多,发送Handler 
    isLoadMore = true; 
    handler.sendMessageDelayed(Message.obtain(), 2000); 
   } 
  }); 
 } 
 
 /**模拟网络数据*/ 
 private void initDatas() { 
  //实际开发应该子线程执行 
  for (int i = 0; i < 50; i++) { 
   datas.add("我是第" + i + "条数据"); 
  } 
 } 
 
 private class MyAdapter extends BaseAdapter{ 
 
  @Override 
  public int getCount() { 
   if(datas != null){ 
    return datas.size(); 
   } 
   return 0; 
  } 
 
  @Override 
  public Object getItem(int position) { 
   if(datas != null){ 
    return datas.get(position); 
   } 
   return null; 
  } 
 
  @Override 
  public long getItemId(int position) { 
   return position; 
  } 
 
  @Override 
  public View getView(int position, View convertView, ViewGroup parent) { 
   //模拟item为TextView 
   TextView textView = new TextView(MainActivity.this); 
   textView.setText(getItem(position)+""); 
   textView.setTextColor(Color.GREEN); 
   return textView; 
  } 
 } 
} 

短短几行代码已经完成了主要功能,运行如下:

喜欢的朋友可以关注我哦,本专栏会不定期更新简单有趣的Android小文

 类似资料:
  • 本文向大家介绍vue.js移动端app之上拉加载以及下拉刷新实战,包括了vue.js移动端app之上拉加载以及下拉刷新实战的使用技巧和注意事项,需要的朋友参考一下 上拉加载以及下拉刷新都是移动端很常见的功能,在搜索或者一些分类列表页面常常会用到。 跟横向滚动一样,我们还是采用better-scroll这个库来实现。由于better已经更新了新的版本,之前是0.几的版本,更新了一下发现,现在已经是1

  • 本文向大家介绍RecyclerView下拉刷新上拉加载,包括了RecyclerView下拉刷新上拉加载的使用技巧和注意事项,需要的朋友参考一下 一 、前言 最近实在太忙,一个多礼拜没有更新文章了,于是今晚加班加点把demo写出来,现在都12点了才开始写文章。 1.我们的目标 把RecyclerView下拉刷新上拉加载更多加入到我们的开发者头条APP中。 2.效果图 3.实现步骤 找一个带上拉刷新下

  • 本文向大家介绍Android自定义下拉刷新上拉加载,包括了Android自定义下拉刷新上拉加载的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了Android自定义下拉刷新上拉加载的具体实现步骤,供大家参考,具体内容如下 实现的方式是SwipeRefreshLayout + RecyclerView 的VIewType 首先看效果: 总的思路: 布局文件 下拉刷新的实现思路 用于测试的

  • 本文向大家介绍Android XListView下拉刷新和上拉加载更多,包括了Android XListView下拉刷新和上拉加载更多的使用技巧和注意事项,需要的朋友参考一下 市面上有好多的类比ListView刷新数据的开源框架,如:v4包自带的SwipeRefreshLayout ,以及集ListView、GridView甚至WebView于一身的Pulltorefresh等等。前述的两个开源框

  • 本文向大家介绍Android ListView实现上拉加载更多和下拉刷新功能,包括了Android ListView实现上拉加载更多和下拉刷新功能的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家介绍了Android ListView下拉刷新功能的实现方法和功能,供大家参考,具体内容如下 1、ListView优化方式 界面缓存:ViewHolder+convertView 分页加载:上拉刷新

  • 本文向大家介绍微信小程序 scroll-view实现上拉加载与下拉刷新的实例,包括了微信小程序 scroll-view实现上拉加载与下拉刷新的实例的使用技巧和注意事项,需要的朋友参考一下 微信小程序 scroll-view实现上拉加载与下拉刷新的实例 实现效果图: 如图,使用小程序的scroll-view实现的上拉加载数据,下拉刷新数据,试下代码如下: js文件代码: json文件代码 wxml文