Android下拉刷新列表库PullToRefresh的使用

实现效果:

添加依赖:

implementation 'com.github.userswlwork:pull-to-refresh:1.0.0'

View布局:

<?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=".MainActivity">

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

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

</LinearLayout>

Control层代码:

public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView lv;
    private ArrayAdapter<String> adapter;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        lv=findViewById(R.id.lv);
        List<String> data=new ArrayList<>();//初始化数据集合
        for (int i=0;i<6;i++) {
            data.add("饥渴学院");
            data.add("计算机科学与技术");
            data.add("山东学院");
            data.add("信息工程系");
        }
        //设置适配器
        adapter=new ArrayAdapter<>(this,android.R.layout.simple_list_item_1,data);
        lv.setAdapter(adapter);  //部署适配器

        //列表的下拉刷新事件监听
        lv.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener<ListView>() {
            @SuppressLint("StaticFieldLeak")
            @Override
            public void onRefresh(PullToRefreshBase<ListView> pullToRefreshBase) {

               //AsyncTask 实际上是一个帮助类,可以让我们很简单的从子线程切换到主线程,去更新UI界面
                new AsyncTask<Void, Void, Void>() {

                    //doInBackground这个方法所有代码都会在一个子线程中执行,所有的耗时任务都在这处理
                    @Override
                    protected Void doInBackground(Void... params) {
                        try {
                            Thread.sleep(3000);//刷新时间3秒
                        } catch (InterruptedException e) {
                            e.printStackTrace();
                        }
                        return null;
                    }

                    //主线程中修改UI数据,更新UI
                    @Override
                    protected void onPostExecute(Void aVoid) {
                        super.onPostExecute(aVoid);
                        //刷新之后添加的数据
                        adapter.addAll("7704宿舍", "哈哈哈哈哈哈哈哈哈哈哈");
                        Toast.makeText(MainActivity.this,"刷新成功",Toast.LENGTH_SHORT).show();
                        //通知lv数据已经加载完
                        lv.onRefreshComplete();
                    }
                }.execute();
            }
        });
    }
}

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值