PullToRefreshListView的使用

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

}

    
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,那我接下来讲解一下如何使用 `PullToRefreshlibrary` 框架。 1. 在 `XML` 文件中添加 `PullToRefresh` 控件: ```xml <com.handmark.pulltorefresh.library.PullToRefreshListView android:id="@+id/pull_to_refresh_list_view" android:layout_width="match_parent" android:layout_height="match_parent"> <ListView android:id="@+id/list_view" android:layout_width="match_parent" android:layout_height="match_parent" /> </com.handmark.pulltorefresh.library.PullToRefreshListView> ``` 2. 在 `Java` 代码中初始化 `PullToRefresh` 控件: ```java PullToRefreshListView pullToRefreshListView = findViewById(R.id.pull_to_refresh_list_view); ListView listView = pullToRefreshListView.getRefreshableView(); // 设置刷新监听器 pullToRefreshListView.setOnRefreshListener(new OnRefreshListener<ListView>() { @Override public void onRefresh(PullToRefreshBase<ListView> refreshView) { // 执行刷新操作 new GetDataTask().execute(); } }); // 设置加载更多监听器 pullToRefreshListView.setOnLastItemVisibleListener(new OnLastItemVisibleListener() { @Override public void onLastItemVisible() { // 执行加载更多操作 new GetDataTask().execute(); } }); ``` 3. 实现刷新和加载更多的操作: ```java private class GetDataTask extends AsyncTask<Void, Void, List<String>> { @Override protected List<String> doInBackground(Void... params) { // 执行网络请求或其他耗时操作,返回数据列表 List<String> data = new ArrayList<>(); // ... return data; } @Override protected void onPostExecute(List<String> data) { // 刷新或加载更多完毕后,更新列表数据并结束刷新状态 if (isRefreshing) { adapter.setData(data); pullToRefreshListView.onRefreshComplete(); isRefreshing = false; } else { adapter.addData(data); pullToRefreshListView.onRefreshComplete(); } } } ``` 以上就是使用 `PullToRefreshlibrary` 框架的基本步骤,您可以根据自己的实际需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值