gpt4 book ai didi

android - 如何实现Android Pull-to-Refresh

转载 作者:IT老高 更新时间:2023-10-28 12:49:17 28 4
gpt4 key购买 nike

在 Twitter(官方应用)等 Android 应用中,当遇到 ListView 时,可以将其拉下(释放时会弹回)以刷新内容。

我想知道在您看来,实现它的最佳方式是什么?

我能想到的一些可能性:

  1. ListView 顶部的一个项目 - 但是我认为通过 ListView 上的动画滚动回项目位置 1(从 0 开始)并不是一件容易的事。
  2. ListView 之外的另一个 View - 但我需要注意在拉动 ListView 时向下移动它的位置,我不确定我们是否可以检测到对 ListView 的拖动触摸是否仍然真的滚动项目 ListView 。

有什么建议吗?

附:我想知道官方 Twitter 应用程序源代码什么时候发布。据说会发布,但是6个月过去了,从那以后我们就再也没听说过。

最佳答案

谷歌终于发布了正式版的pull-to-refresh库!

在支持库里面叫做SwipeRefreshLayout,文档是here :

  1. 添加 SwipeRefreshLayout 作为 View 的父级,这将被视为刷新布局的拉动。 (我以ListView为例,可以是LinearLayoutScrollView等任何View)

     <androidx.swiperefreshlayout.widget.SwipeRefreshLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/pullToRefresh"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <ListView
    android:id="@+id/listView"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>
    </androidx.swiperefreshlayout.widget.SwipeRefreshLayout>
  2. 为你的类添加一个监听器

     protected void onCreate(Bundle savedInstanceState) {
    final SwipeRefreshLayout pullToRefresh = findViewById(R.id.pullToRefresh);
    pullToRefresh.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
    @Override
    public void onRefresh() {
    refreshData(); // your code
    pullToRefresh.setRefreshing(false);
    }
    });
    }

您也可以根据需要调用pullToRefresh.setRefreshing(true/false);

更新

Android 支持库已被弃用,并已被 AndroidX 取代。可以找到新库的链接 here .

另外,您需要在您的项目中添加以下依赖项:

implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

你可以去Refactor>>迁移到AndroidX,Android Studio会为你处理依赖。

关于android - 如何实现Android Pull-to-Refresh,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4583484/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com