.Net 转战 Android 4.4 日常笔记(10)--PullToRefresh下拉刷新使用

本文介绍如何使用开源库PullToRefresh实现下拉刷新功能,并提供了详细的步骤和代码示例,包括导入库、引用、解决版本冲突、修改代码等。最终展示了一个简单的项目实现效果。
下拉刷新很多地方都用到了,新浪微博,微信,百度新闻

这里我们使用一个开源的库叫:PullToRefresh

开源地址:https://github.com/chenyoca/pull-to-refresh

下载地址:https://github.com/chenyoca/pull-to-refresh/archive/master.zip

解压代码之后通过ecplise导入到项目里面

导入之后可能会出现库路径引用错误

在项目右键,依次对库进行修正

运行主Activity

这时就可以看到效果了!接下来我们自己创建一个项目来使用这个控件

新建一个项目UsingPullToRefresh

创建之后要对库进行引用,这有点像C#工程一样,要对程序集进行引用(3个库都要引用)

引用完之后会报出一个jar版本不同的错误

所以我们要让库和我们的工程的版本一致

拷贝libs下的android-support-v4.jar

分别复制到刚引用的3个库中替换libs下的android-support-v4.jar

修改一下MianActivity.java和activity_main.xml的代码

package com.example.usingpulltorefresh;

import java.util.ArrayList;
import java.util.List;

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

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ListView;
import android.os.Build;

public class MainActivity extends Activity {

    private PullToRefreshListView lv;
    private ArrayAdapter<String> adapter;
    private List<String> list;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        //查找到控件
        lv = (PullToRefreshListView) findViewById(R.id.lv);
        list= new ArrayList<String>();
        list.add("香蕉");
        list.add("苹果");
        
        adapter = new ArrayAdapter<String>(this,android.R.layout.simple_list_item_1,list);
        lv.setAdapter(adapter);
        
        lv.setOnRefreshListener(new OnRefreshListener<ListView>(){
            @Override
            public void onRefresh(PullToRefreshBase<ListView> refreshView) {
                // TODO Auto-generated method stub
                new AsyncTask<Void,Void,Void>(){
                    @Override
                    protected Void doInBackground(Void... arg0) {
                        // TODO Auto-generated method stub
                        try {
                            Thread.sleep(2000);
                        } catch (InterruptedException e) {
                            // TODO Auto-generated catch block
                            e.printStackTrace();
                        }
                        return null;
                    }
                    
                    protected void onPostExecute(Void result){
                        adapter.addAll("西瓜","橙子","火龙果");
                        lv.onRefreshComplete();
                    }
                    
                }.execute();
            }
        });
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {

        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();
        if (id == R.id.action_settings) {
            return true;
        }
        return super.onOptionsItemSelected(item);
    }

    

}
MainActivity
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/container"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.usingpulltorefresh.MainActivity"
    tools:ignore="MergeRootFrame" >
    <com.handmark.pulltorefresh.library.PullToRefreshListView
        android:id="@+id/lv"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    </com.handmark.pulltorefresh.library.PullToRefreshListView>
</LinearLayout>
activity_main

OK,可以运行了!

直接下载源码:http://pan.baidu.com/s/1mgKBkrI

 

根据原作 https://pan.quark.cn/s/459657bcfd45 的源码改编 Classic-ML-Methods-Algo 引言 建立这个项目,是为了梳理和总结传统机器学习(Machine Learning)方法(methods)或者算法(algo),和各位同仁相互学习交流. 现在的深度学习本质上来自于传统的神经网络模型,很大程度上是传统机器学习的延续,同时也在不少时候需要结合传统方法来实现. 任何机器学习方法基本的流程结构都是通用的;使用的评价方法也基本通用;使用的一些数学知识也是通用的. 本文在梳理传统机器学习方法算法的同时也会顺便补充这些流程,数学上的知识以供参考. 机器学习 机器学习是人工智能(Artificial Intelligence)的一个分支,也是实现人工智能最重要的手段.区别于传统的基于规则(rule-based)的算法,机器学习可以从数据中获取知识,从而实现规定的任务[Ian Goodfellow and Yoshua Bengio and Aaron Courville的Deep Learning].这些知识可以分为四种: 总结(summarization) 预测(prediction) 估计(estimation) 假想验证(hypothesis testing) 机器学习主要关心的是预测[Varian在Big Data : New Tricks for Econometrics],预测的可以是连续性的输出变量,分类,聚类或者物品之间的有趣关联. 机器学习分类 根据数据配置(setting,是否有标签,可以是连续的也可以是离散的)和任务目标,我们可以将机器学习方法分为四种: 无监督(unsupervised) 训练数据没有给定...
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值