【问题标题】:How to add more items at the bottom of an Android Array-backed ListView, and keep position?如何在 Android Array 支持的 ListView 底部添加更多项目并保持位置?
【发布时间】:2011-02-04 18:22:48
【问题描述】:

我有一个带有提供数据的 ArrayAdapter 的 ListView。我正在添加分页,所以当您滚动到底部时,它会加载更多行。

但是当我使用数组时,我发现了一个问题。我无法扩展数组,因为大小显然是固定的,如果我创建一个新的,ListView 要么忽略新项目(notifyDataSetChanged),要么(如果我用新数组刷新列表)它跳到顶部.

通常的方法是什么?使用不同的集合类型?使用容量为最大行数的大型数组?或者有没有办法通知适配器数据集已更改并且它实际上可以工作(notifyDataSetChanged()在我的场景中不起作用,可能是因为数组没有改变,它是一个完全不同的数组,所以通知可能正在工作与旧的)。或者我应该使用新的更大阵列设置适配器,然后将其跳到正确的位置?

【问题讨论】:

    标签: android


    【解决方案1】:

    您在标题中说 ArrayList,但您说的只是一个 Array。尝试使用 ArrayList,您可以使用 ArrayList.add() 方法添加任意数量的项目。是不是我误会你了?

    【讨论】:

    • 对不起,错字。我正在使用一个数组。我需要类型安全,并且希望避免每次从集合中放置/删除时进行强制转换。最好继承 ArrayList,而不是使用数组?
    • 不幸的是,我对此并没有很好的答案。 ArrayList 是我在本例中使用的。而是将其子类化...我将把它留给其他人来回答。 :)
    • 很好奇,为什么在将它添加到 ArrayList 时必须强制转换?您可以将其创建为 ArrayList.
    • 是的,你是对的,不需要投射。 ArrayList 看起来不错,虽然没有 ArrayListAdapter,是否有合适的预构建适配器,或者我需要自己推出。谢谢
    • 是的,当然是。 ArrayAdapter 实际上接受列表以及典型的数组。如果你在这里查看:developer.android.com/reference/android/widget/… 有两个不同的构造函数可以接受一个列表。
    猜你喜欢
    • 2019-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-12-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多