Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/230.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否可以扩展AbsListView以实现新的ListView实现?_Android_Android Listview - Fatal编程技术网

Android 是否可以扩展AbsListView以实现新的ListView实现?

Android 是否可以扩展AbsListView以实现新的ListView实现?,android,android-listview,Android,Android Listview,我一直在考虑创建一个风格不同的列表视图,就像许多其他人一样,我从扩展AbsListView开始。根据Android文档,AbsListView是: 可用于实现虚拟化项目列表的基类。列表在此没有空间定义。例如,此类的子类可以在网格、旋转木马、堆栈等中显示列表的内容 在对ListView实现进行了一些努力和审查之后,似乎无法像ListView那样扩展AbsListView,因为这两个类是耦合的,并且无法访问某些包成员。我偶然发现了一个叫Romain的家伙: AbsListView和AbsSpinne

我一直在考虑创建一个风格不同的列表视图,就像许多其他人一样,我从扩展AbsListView开始。根据Android文档,AbsListView是:

可用于实现虚拟化项目列表的基类。列表在此没有空间定义。例如,此类的子类可以在网格、旋转木马、堆栈等中显示列表的内容

在对ListView实现进行了一些努力和审查之后,似乎无法像ListView那样扩展AbsListView,因为这两个类是耦合的,并且无法访问某些包成员。我偶然发现了一个叫Romain的家伙:

AbsListView和AbsSpinner设计为在 框架它们也可以在第三方应用程序中扩展,但我们做到了 不要故意公开所有必要的受保护字段和方法。 我们希望在如何公开此类API时非常小心,以免 为将来的扩展和内部更改准备的东西。我们现在 建议您只需将所需的代码复制/粘贴到 应用程序


我开始尝试这样做,但是复制AbsListView变成了在一堆其他东西中复制的兔子洞,这看起来真的是一个失败的提议。我想看看是否有人成功地扩展了AbsListView,并分享了一种方法

[1]


[2]

这篇文章发表于2010年左右,但他的评估在今天仍然适用。某些必要的方法和字段受到保护,以防止将来因更改AbsListView的内部结构而导致的不兼容

最好的解决方案仍然是将AbsListView的代码以及必要的依赖项(您提到的兔子洞)复制到您的项目中


同时,如果您想描述您试图构建什么样的视图,我们可能可以为您指出一个比创建自己的AblistView略为简单的方向?

我也有过同样的经验,尝试将
ListView
AblistView
子类化,以开发二维可滚动电子表格。最后,我得到了自己的
ViewGroup
子类来处理布局,以及
TwoDScrollView
子类来处理滚动。最难的部分是让flings正常工作(即在滚动到视图中之前创建和放置新视图),以及在可滚动组件之间同步视图位置。不过,只要有足够的时间,就有可能创建一个健壮的组件,从光标中提取数据并快速平滑地滚动。

“这看起来真像是一个失败的提议”——这将是我对形势的评估。谢谢Mark。这对我来说也是福音。也许你可以更具体一点,你所说的“风格不同的列表视图”是什么意思。你是说那些不是垂直列表的东西吗?或者你指的是垂直的,但有自定义颜色、视图、标题等的东西吗?这里有一个很好的索尼教程(尽管它们扩展了AdapterView而不是AblistView):1。2.3.我想构建一个视图,它显示一个水平列表视图,连接到适配器并回收视图。它需要可滚动并接受不同宽度的视图,尽管它应该保持一致的高度。您可能希望利用其他人为此所做的工作。例如,有一个半流行的水平列表视图:是的,这正是我正在使用的,但是,坦率地说,它还有很多需要改进的地方。我不得不对它进行大量修改,坦率地说,由于某些文件打包到android中的方式,它永远无法完成必要的工作。哦,好吧,暂时不再打这场仗了;)