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

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/dpl12/article/details/82938874

实现效果:

添加依赖:

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();
            }
        });
    }
}

猜你喜欢

转载自blog.csdn.net/dpl12/article/details/82938874