PullToRefreshListView的使用

本文详细介绍了PullToRefreshListView组件的使用方法,包括在Android应用中实现下拉刷新和上拉加载更多的功能。通过示例代码,展示了如何设置监听器、执行异步任务以及更新适配器。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

PullToRefreshListView的使用

其实PullToRefreshListView和XlistView的原理有很多相似之处
1.导入Module在这里插入图片描述
2.导入依赖在这里插入图片描述布局

<com.example.pulltolibrary.PullToRefreshListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/pullToRefreshListView"></com.example.pulltolibrary.PullToRefreshListView>

主页面

public class MainActivity extends AppCompatActivity {

    private PullToRefreshListView pullToRefreshListView;
    private List<MyData.DataBean> listAll =new ArrayList<>();
    private String path="http://api.expoon.com/AppNews/getNewsList/type/1/p/";
    private int num=1;
    private MyBaseAdapter myBaseAdapter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        initView();
        myBaseAdapter = new MyBaseAdapter(MainActivity.this);
        pullToRefreshListView.setAdapter(myBaseAdapter);
        initAsyncTask(num);
        initLister();
    }

    private void initAsyncTask(int num) {
        new Async().execute(path+num);
    }

    private void initLister() {
        //设置监听
        pullToRefreshListView.setOnRefreshListener(new PullToRefreshBase.OnRefreshListener2<ListView>() {
            //下拉刷新
            @Override
            public void onPullDownToRefresh(PullToRefreshBase<ListView> refreshView) {
                num=1;
                listAll.clear();
                initAsyncTask(num);
                //停止刷新
                pullToRefreshListView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pullToRefreshListView.onRefreshComplete();
                    }
                },1000);
            }
            //下上拉加载更多
            @Override
            public void onPullUpToRefresh(PullToRefreshBase<ListView> refreshView) {
                num++;
                initAsyncTask(num);
                //停止加载
                pullToRefreshListView.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        pullToRefreshListView.onRefreshComplete();
                    }
                },1000);
            }
        });
    }

    private void initView() {
        pullToRefreshListView = (PullToRefreshListView) findViewById(R.id.pullToRefreshListView);
        //PullToRefreshListView支持上拉下拉
        pullToRefreshListView.setMode(PullToRefreshListView.Mode.BOTH);
    }
    class Async extends AsyncTask<String,Void,List<MyData.DataBean>>{

        @Override
        protected List<MyData.DataBean> doInBackground(String... strings) {
            try {
                URL url = new URL(path+num);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                if(connection.getResponseCode()==200){
                    String s = CharStreams.toString(new InputStreamReader(connection.getInputStream(), "UTF-8"));
                    MyData data = new Gson().fromJson(s, MyData.class);
                    return data.getData();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
            return null;
        }

        @Override
        protected void onPostExecute(List<MyData.DataBean> dataBeans) {
            super.onPostExecute(dataBeans);
            listAll.addAll(dataBeans);
            myBaseAdapter.setList(listAll);
        }
    }

}

    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值