Android-AS平台下制作ListView之下拉刷新
来源:互联网 发布:手机查看端口被占用 编辑:程序博客网 时间:2024/05/01 16:33
在Androidstudio下配置下拉刷新功能,这个功能需要借助一个开源PullToRefresh项目,GitHub地址:https://github.com/chrisbanes/Android-PullToRefresh/
我的源码下载地址:http://download.csdn.net/detail/liuyu973971883/9595478
然后我们将其导入,发现有四个项目分,我们需要用的是最后三个文件夹,将他们已Module方式导入项目中
————————————————————————————————————————————————————————
大多数人发现导入后发生了一大推的错误,这些错误是因为三个Module的build.gradle文件配置需要修改,修改前后的代码对比:
Module:library的build.gradle修改前:
apply plugin: 'com.android.library'android { compileSdkVersion 16 //需要修改 buildToolsVersion "19.1.0" //需要修改 defaultConfig { minSdkVersion 4 //需要修改 targetSdkVersion 4 //需要修改 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}
修改后:
apply plugin: 'com.android.library'android { compileSdkVersion 24 //需要修改 buildToolsVersion "24.0.1" //需要修改 defaultConfig { minSdkVersion 15 //需要修改 targetSdkVersion 24 //需要修改 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}
Module:pullToRefreshListFragment的build.gradle修改前:
apply plugin: 'com.android.library'android { compileSdkVersion 16 //需要修改 buildToolsVersion "19.1.0" //需要修改 defaultConfig { } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}dependencies { compile project(':library') compile 'com.android.support:support-v4:18.+' //需要修改}修改后:
apply plugin: 'com.android.library'android { compileSdkVersion 24 //需要修改 buildToolsVersion "24.0.1" //需要修改 defaultConfig { } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}dependencies { compile project(':library') compile 'com.android.support:appcompat-v7:24.1.1' //需要修改}
Module:pullToRefreshViewPager的build.gradle修改前:
apply plugin: 'com.android.library'android { compileSdkVersion 16 //需要修改 buildToolsVersion "19.1.0" //需要修改 defaultConfig { minSdkVersion 4 //需要修改 targetSdkVersion 4 //需要修改 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}dependencies { compile project(':library') compile 'com.android.support:support-v4:18.+' //需要修改}修改后:
apply plugin: 'com.android.library'android { compileSdkVersion 24 //需要修改 buildToolsVersion "24.0.1" //需要修改 defaultConfig { minSdkVersion 15 //需要修改 targetSdkVersion 24 //需要修改 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } }}dependencies { compile project(':library') compile 'com.android.support:appcompat-v7:24.1.1' //需要修改}
出现问题千万不能慌,程序会跳转到出问题的那个文件,这个问题是因为在android6.0中FloatMath改为了Math,我们只需要修改一下即可,将下面两句代码进行修改:
float exactContentHeight = Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
return (int) Math.max(0, FloatMath.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())修改为:
float exactContentHeight = (float) Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale());
return (int) Math.max(0, Math.floor(mRefreshableView.getContentHeight() * mRefreshableView.getScale())上面修改的地方只是将FloatMath改为了Math,第一处修改的地方进行强转即可,到这里错误就解决了,还差最后一步,就是依赖关系
——————————————————————————————————————————
错误排除了,点击你的APP右击进行Module设置,将你刚刚那三个Module添加到APP里面
——————————————————————————————————————————
终于到写代码的时候了,真不容易这一路
首先,我们需要配置一下你的主Activity 的布局文件,在里面插入library中配置好的ListView,代码如下:
<?xml version="1.0" encoding="utf-8"?><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" tools:context="com.oak.learnrefreshlistview.MainActivity"> <com.handmark.pulltorefresh.library.PullToRefreshListView android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/reListView"> </com.handmark.pulltorefresh.library.PullToRefreshListView></RelativeLayout>
然后我们进入MainActivity.java文件进行配置:
package com.oak.learnrefreshlistview;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.os.Bundle;import android.widget.Adapter;import android.widget.ArrayAdapter;import android.widget.ListAdapter;import android.widget.ListView;import com.handmark.pulltorefresh.library.PullToRefreshBase;import com.handmark.pulltorefresh.library.PullToRefreshListView;import java.util.ArrayList;public class MainActivity extends AppCompatActivity { private PullToRefreshListView lv; //libarary配置好的listView private ArrayAdapter adapter; //ListView适配器 private ArrayList arrayList; //用来存放字符串用的list集合 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); arrayList = new ArrayList(); arrayList.add("111");//添加三个字符串到集合中 arrayList.add("222"); arrayList.add("333"); //配置适配器,我这里用的专门存放String的适配器 adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arrayList); //拿到listView lv = (PullToRefreshListView) findViewById(R.id.reListView); //将适配器设置到listview中 lv.setAdapter(adapter); //调用listView下拉刷新侦听 lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { //new一个异步类 new AsyncTask<Void,Void,Void>(){ @Override protected Void doInBackground(Void... voids) { try { //在这里让线程睡眠3秒,以便看出正在刷新的效果,到时候这里就写网络交互的代码 Thread.sleep(3000); } catch (InterruptedException e) { e.printStackTrace(); } return null; } //此方法是在doInBackground执行完后会执行 @Override protected void onPostExecute(Void aVoid) { super.onPostExecute(aVoid); //向适配器添加新的数据 adapter.addAll("3333","44444"); //调用listview刷新完成方法 lv.onRefreshComplete(); } }.execute(); } }); }}到这里,我们就完成了一个listview的下拉刷新了,效果图如下:
By:Oak先生
- Android-AS平台下制作ListView之下拉刷新
- android中listview之下拉刷新
- Listview列表之下拉刷新
- ListView操作之下拉刷新
- Xamarin.Android之下拉刷新
- Xamarin.Android之下拉刷新
- Android之下拉与上拉刷新
- Android之下拉(上拉)刷新大合集(包括ListView、ExpandableListview、ScrollView、GridView等等)
- Android自定义控件之下拉刷新;
- Android 之下拉刷新控件XRefreshableView
- Android学习系列(30)--App列表之下拉刷新
- Android常用控件之下拉刷新Wifi列表
- android 5.0新特性学习总结之下拉刷新(一)
- Android开发技术学习之下拉刷新功能的实现
- Android学习系列(24)--App列表之下拉刷新
- Android 开发之下拉刷新+ViewPager的banner滚动
- Android自定义控件之下拉刷新加载更多
- App列表之下拉刷新
- iOS--常用宏定义
- hdu 1254 推箱子/poj 1475 Pushing Boxes(推箱子经典问题,BFS嵌套BFS)
- 1089. Insert or Merge (25)
- TCP三次握手和四次挥手全过程及为什么要三次握手解答
- 博弈论 套路开始的地方(NIM游戏和Sprague-Grundy函数)
- Android-AS平台下制作ListView之下拉刷新
- FreeSurfer
- 多态
- 《微服务架构的分布式事务解决方案》视频教程--课程列表
- Android开发-蓝牙遥控器(字符串形式发送)-应用例程
- 一个Android自定义背景视图,通过触摸绘制类星空背景图
- LeetCode进阶之路( Count and Say)
- java栈与堆的区别
- hdu 5723 最小生成树+期望