码迷,mamicode.com
首页 > 移动开发 > 详细

安卓实现下拉刷新效果

时间:2018-03-08 12:05:38      阅读:279      评论:0      收藏:0      [点我收藏+]

标签:end   项目   public   odi   too   package   undle   信息   记录   

先上效果图:

技术分享图片

 

使用网络应用时,比如QQ、微信这些,我们经常会通过下拉实现消息的刷新。下面记录一种通过调用第三方文件实现下拉刷新ListView的方法

 

步骤一、先在github中搜索Android-PullToRefresh-master并下载

步骤二、在AndroidStudio中新建一个项目,右键Importt Module导入Android-PullToRefresh-master中的library文件(注意调整好项目的sdk和jdk版本)如何导入类库文件?

步骤三、复制类库文件library中的PullToRefreshListView.java的路径到自己新建的项目中的布局文件中,并给它添加宽高和id,如下

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context="com.contentprovide.liuliu.demo_3_3_7.MainActivity">

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

</LinearLayout>

 

 

 步骤四、在java文件中使用集合和适配器给集合添加列表项内容,在异步线程中处理刷新行为,并且在ListView对象中的监听事件中执行异步线程

package com.contentprovide.liuliu.demo_3_3_7;

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.util.ArrayList;
import java.util.List;

public class MainActivity extends AppCompatActivity {

    PullToRefreshListView my_listview;

    //定义一个集合对象用于存放listview的列表项内容
    List<String> list;

//    定义一个ListView适配器
    ArrayAdapter<String> arrayAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        my_listview = (PullToRefreshListView) findViewById(R.id.my_listview);

        list = new ArrayList<>();
        list.add("Item1");
        list.add("Item2");
        list.add("Item3");
        list.add("Item4");

        arrayAdapter = new ArrayAdapter<String>(this,R.layout.support_simple_spinner_dropdown_item,list);

//        把适配器添加ListView对象中
        my_listview.setAdapter(arrayAdapter);

//        设置事件监听器
        my_listview.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
            @Override
            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
//                执行异步线程
                asyncTask.execute();
            }
        });



    }

//    在异步线程中处理刷新行为
    AsyncTask<Void,Void,Void> asyncTask = 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);
            list.add("新增加的Item1");
            list.add("新增加的Item2");

//            通知ListView对象刷新完成
            my_listview.onRefreshComplete();
        }
    };



}

 

安卓实现下拉刷新效果

标签:end   项目   public   odi   too   package   undle   信息   记录   

原文地址:https://www.cnblogs.com/lyd447113735/p/8527095.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!