进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新

摘要:
选择文件->(3) 右键单击项目->选择左侧的应用程序(您自己的项目)->点下方的小加号->importjava.lang.reflect.Array;importjava.util.ArrayList;setContentView(R.layout.activity_main);arr.add(“测试4”);arr.add(“测试5”);arr);

      说实话,这是我第一次这么正儿八经的用github开源库,之前一直在听一些大神对这个世界级的开源库赞不绝口,今天终于体会到了。由于下拉刷新的类库是在eclipse下开发完成的,而eclipse如何使用如果导入网上的教程都非常详细。昨天我试了半天发现由于自己对android studio还不是很熟悉,所以引用类库的时候发现无从下手。但是今天早晨起来我唯一想做的事就是一定要实现这个下拉刷新的效果。我去网上找android studio导入类库的教程,导入PullToRefresh的教程,但是网上用的都是旧版的android studio,操作起来非常繁琐,对于我这样正在摸索的人很难理解,而且,我用的是最新版的android studio,所以网上那些教程并不是特别适合我。所以没有办法只能自己摸索了。还好花了一个小时左右,终于导入类库并且成功实现了下拉刷新的效果。虽然还有一些小问题,比如说我并不明白为什么在xml里面添加PullToRefresh的空间,里面的属性width height id啊什么的都没有代码提示,导致我自己往上敲代码的时候有些心虚。当然,这无伤大雅,以后再研究到底为什么没有代码提示。

新版android studio导入类库并使用,实现下拉刷新。(我感觉其他类库也应该类似)

android studio版本:

进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新第1张

 

教程开始:

(1)在github官网下载PullToRefresh的源码。源项目地址:https://github.com/chrisbanes/Android-PullToRefresh  

(2)在android studio中导入原项目的类库

       file->new->Import Module->选择文件->选择Library文件夹、extras里面的PullToRefreshViewPager和PullToRefreshListFragment。

       导入之后在你的项目里会出现这三个库,由于新版的as很为开发者着想,所以gradle不用自己改,它全自动同步!

(3)右键项目->Open Module Settings->左侧选择app(也就是你自己的项目)->右侧选择dependencies->点下面的小加号->选择Module Dependency->把我们刚才导入的类库全部选择进去。

(4)如果没有出错,那么PullToRefresh类库就完全可以使用了(这些事情做完了一定要make一下项目,不然会抛异常)。

(5)demo源码:

MainActivity.java:

import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.widget.ArrayAdapter;
import android.widget.ListView;

import com.handmark.pulltorefresh.library.PullToRefreshBase;
import com.handmark.pulltorefresh.library.PullToRefreshListView;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {
    private PullToRefreshListView pl;
    private ArrayAdapter<String> adaper;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        pl = (PullToRefreshListView)findViewById(R.id.l);
        List<String> arr = new ArrayList<String>();
        arr.add("test1");
        arr.add("test2");
        arr.add("test3");
        arr.add("test4");
        arr.add("test5");
        adaper = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,arr);//初始化数据
        
        
        pl.setAdapter(adaper);
        pl.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                 new AsyncTask<Void,Void,Void>(){

                     @Override
                     protected Void doInBackground(Void... voids) {//后台执行操作,此处用延时模拟同步过程
                         try {
                             Thread.sleep(3000);
                         } catch (InterruptedException e) {
                             e.printStackTrace();
                         }
                         return null;
                     }

                     @Override
                     protected void onPostExecute(Void aVoid) {//与数据库交互,添加数据
                         super.onPostExecute(aVoid);
                         adaper.addAll("hello","success");
                         pl.onRefreshComplete();   //通知同步完成
                     }
                 }.execute();
            }

            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {

            }
        });
    }
}

activity_main.xml:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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.example.lzc.myapplication.MainActivity">

    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/l"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

    </com.handmark.pulltorefresh.library.PullToRefreshListView>


</LinearLayout>

效果图:

 进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新第2张

进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新第3张

进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新第4张

免责声明:文章转载自《进阶篇-用户界面:6.android studio使用github开源库实现下拉刷新》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Tensor Core技术解析(下)MySQL 重连机制下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

WPF: x名称空间

这个命名空间存放的就是XAML和XAML编译器沟通的东西,比如编译时与那个C#代码合并等 一、 在XAML中出现的方式有三种 1.标签扩展: x:Array, x:Null, x:Static, x:Type 2. XAML指令元素: x:Code, x:XData 3. Attribute: x:Class, x:ClassModifier, x:Fie...

PHP:函数返回类的实例

PHP 函数返回“类的实例”,并使用类的实例($m)    <?php // php_version = 7.4.1 // 定义数据类型 class obj { private $obj_name; private $obj_age; public function set($name, $age)...

dump redo日志文件的信息

通常会用到以下两个命令:1.'alter session'命令用来dump redo日志的文件头2.'alter system dump logfile'命令用来dump redo文件的内容 以上命令也可以对归档日志进行dump。输出结果存放在session的trace文件中。 可以根据以下方式对redo日志进行dump:(1) To dump recor...

Subsonic 介绍

原文:Introduction to SubSonic 介绍了SubSonic,一个数据层构建器导言一 个易维护的应用程序,不同的类之间有不同的分工,通常分为界面层、业务层和数据访问层。虽然这一技术有利于更好地组织应用,一些开发人员不愿这么做。创建 一个可靠的和快速的数据访问层需要一些规划,一旦你创建了一个,他们看起来都是相似的。SubSonic帮助你基于...

一个被慕课网拿去做Java就业班终极项目的开源商城项目,推荐给大家

慕课网大型Java体系课程认证!“课程终极项目”、“还原企业真实项目流程”、“凭此一项综合实战,足以叩开企业大门”,这些关键字是慕课网对该项目的评价,作为这个好评度百分百、就业率第一的课程终极项目,这样的开源项目,你不爱吗?newbee-mall开源商城项目,值得你去好好探索一番。 Spring Boot 开源商城项目 newbee-mall 介绍 在做这...

如何调用部署在SSL下的Web Services

java:In my recent experience, this error appears when there is a problem with the trustStore or trustStorePassword. Make sure you have separate keyStore and trustStore files that...