在像Twitter(官方应用)这样的Android应用中,当你遇到ListView时,你可以拉下它(发布时它会反弹回来)来刷新内容.

我想知道,在你看来,实现这一目标的最佳方式是什么?

我可以想到一些可能性:

  1. 列表视图顶部的一个项目——但是我不认为在列表视图上用动画滚动回到项目位置1(基于0)是一项容易的任务.
  2. ListView之外的另一个视图——但我需要注意在拖动ListView时向下移动它的位置,我不确定我们是否能检测到拖动到ListView时是否仍然真正滚动ListView上的项目.

有什么建议吗?

另外,我想知道Twitter应用程序的官方源代码什么时候发布.有人提到它将上映,但6个月过go 了,从那以后我们就再也没有听到过它的消息.

推荐答案

最后,Google发布了正式版本的Pull-to-Refresh库!

它被称为SwipeRefreshLayout,在支持库中,文档是here:

  1. 添加SwipeRefreshLayout作为视图的父视图,该视图将被视为刷新布局的 pull .(我以ListView为例,它可以是任何View,比如LinearLayoutScrollView等.)

     <android.support.v4.widget.SwipeRefreshLayout
         android:id="@+id/pullToRefresh"
         android:layout_width="match_parent"
         android:layout_height="wrap_content">
         <ListView
             android:id="@+id/listView"
             android:layout_width="match_parent"
             android:layout_height="match_parent"/>
     </android.support.v4.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);.

UPDATE

Android支持库已被弃用,并被AndroidX取代.新图书馆的链接可以在here页找到.

此外,您还需要向项目中添加以下依赖项:

implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.1.0'

OR

你可以go 重构>>;迁移到AndroidX,Android Studio将为您处理依赖关系.

Android相关问答推荐

处理Room数据库中的嵌套实体

Android 14(Oneui 6)中的本地推送通知行为不一致

泛型类型lambda函数参数作为函数参数

strings.xml中字符串数组中的占位符

如何在Jetpack Compose中更新异步回调的用户界面

我怎样才能画一条线在喷气背包组成和有一个自定义的角落?

如何修复Google Play市场中有关已删除广告库的错误消息?

如何检测低性能 Android 设备进行条件动画渲染?

为什么我收到这个错误我需要安装 android studio

如何仅同步 local_manifest.xml?

具有数据库和升级潜力的移动应用程序开发(Android)供朋友使用

Compose 状态不是 recomposing

Android Studio电鳗:javaHome好像无效

我该怎么做文本计时器

在 Jetpack Compose 中包装内容

喷气背包组成影子奇怪的行为

如何在 Jetpack Compose 中禁用 TabRow 或 Tab 中的涟漪效应?

Android全屏AlertDialog

如何从构建的流对象中发出值

如何在 Kotlin 的片段中制作图像列表?