问题标签 [baseadapter]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1349 浏览

android - Service、ProgressBar、Gridview(和他的 notifydatasetchanged)的组合一个 QuickAction-Implementation 出错了

(对不起我的拼写错误)

我在组合一些事情时遇到了问题:

我使用 GridView 从数据库下载节目内容。onClick 文件被下载,以后可以查看。它大约 20MB。此下载由服务完成。

gridView 中的每个项目在布局中都包含一个进度条。如果项目正在通过服务在后台下载,则仅显示此进度条。

Service 发送关于下载进度的广播,Intent 包含项目的 ID,以便在 gridview 的 Adapter 的数据中找到它。

在我的 Activity 中注册了 BroadcastReceiver 以获取进度更新(请记住,可以同时下载),它在 gridview-adapter 中调用函数“setProgress”

至此,一切正常。

此外,我使用来自 http://www 的 QuickAction 实现。londatiga.net/it/how-to-create-quickaction-dialog-in-android/(空格,因为我不能发布两个以上的超链接)

现在问题来了:

有时,我猜当 notifydatasetchanged 被调用并且用户点击一个项目时,快速操作显示在错误的位置。

为了更清楚,这里有两张图片:

第一个是应该发生的事情(在这种情况下,单击 gridview 的第一项) http://dl.dropbox.com/u/9031500/expected.png

第二张图片显示了有时会发生什么(仅当某些下载正在运行时,这就是为什么我猜它是因为“notifydatasetchanged”和视图的重建)。这也是对第一项的点击,不幸的是,快速操作显示在第四项: http ://dl.dropbox.com/u/9031500/wrong.png

这是我在呼吁快速行动的活动中的实现:

也许有人对我有任何想法或提示我如何处理这个问题!提前一百万谢谢!

0 投票
1 回答
324 浏览

android - 更新内容位图时刷新图库对象

我有一个从 android.widget.Gallery 派生的类和一个从 BaseAdapter 派生的类,它覆盖了 createBitmap。画廊将显示从互联网上下载的一堆图像,但由于用户可能选择不观看所有图像,因此我仅在必要时下载每张图像(即当它被画廊显示时)。因此,在第一次调用 createBitmap 时,会返回一个默认的“下载图像”图标,并且会安排正确图像的下载。当图像准备好时,我的活动会收到通知。但我不知道如何强制刷新当前可见的图库对象(尽管将其滚动出视图并返回查看下载的图像就足够了)。notifyDataSetChanged() 没有任何乐趣...

有任何想法吗?

0 投票
1 回答
1574 浏览

android - 保留列表视图每一行中元素的状态

我通过使用 inflater 为每一行充气来设计一个列表视图,并且我在其点击事件上更改了 convertView 元素的颜色。但是在滚动列表后,元素会丢失这些更改。我怎样才能“保存”他们的状态并代表他们?

而且我脑子里又多了一个查询,当点击提交按钮时,如何计算未点击的“列表项”总数?

滚动前 http://69.imagebam.com/download/l4tJZG08i5tM_7SV3K_fHQ/18631/186307764/snap1.png 滚动后 http://17.imagebam.com/download/CC3cRv0ITi42Fo8WWUs86g/18631/186307781/snap4.png

这是我的代码:

0 投票
1 回答
2806 浏览

java - Android BaseAdapter 处理空的 ArrayList

我正在尝试使用基本适配器使用 ArrayList> 填充 ListView。ArrayList 由数据库填充,并且数据库可能没有条目,因此是一个空的 ArrayList,例如在第一次启动应用程序时。当 ArrayList 为空时,我收到一个非脚本“java.lang.RuntimeException:无法启动活动 ComponentInfo ... java.lang.NullPointerException”。

我的 onCreate 方法如下所示:

设置 lv.setAdapter(null) 将使应用程序显示我设置的空列表视图。但是,当我把它留给 BaseAdapter 时,我得到了错误。我遵循了 2 个 Android List8.java 和 List14.java 示例,无论哪种方式都给出了相同的结果。我的 BaseAdapter 类如下所示:

我还应该注意,当有要显示的内容时,ListView 会正确显示项目。只有当 ArrayList 为空时才会失败。另外,我使用的是 Android 2.2(不是最好的,我知道)。任何帮助将不胜感激。

0 投票
2 回答
1529 浏览

android - 自定义 ListView 适配器以更改某些项目

我为 Android 编写了一个自定义 ListView 适配器来更改数据的视觉方面。当我加载我的 ListView 时,所需项目的外观发生了变化。当我滚动视图时,其他项目将随机更改,直到最终列表中的每个项目都修改了其外观。

根据我在 SO 上阅读的有关此类代码的内容,我知道positionin 中的字段
public View getView(int position, View convertView, ViewGroup parent)
不一定映射到我的数据结构,因为 Android 会重用旧视图。这似乎是我正在努力解决的行为。

正如 Vincent 建议的那样,使用 ViewHolder 模式更新了 getView 方法:

我需要修改的项目是静态的,所以如果有比在运行时更改它们更好的方法,那也可以!任何帮助将不胜感激,谢谢。

0 投票
4 回答
26001 浏览

android - 如何动态刷新 ListView?

我正在为每行制作一个带有 TextView 和 1 个删除按钮的 ListView。

为了填充列表,我使用我的自定义适配器(扩展基本适配器)和 sqlite db 映射到列表中。

我的要求是单击一行中的删除按钮,应删除记录并刷新列表。

我可以从 db 中删除记录,但在我旋转设备或从活动中分配我的适配器的新实例之前,我的列表不会刷新。

我尝试了以下答案 ,但在我的情况下没有用。这个答案和我的案例之间的区别是我使用的是baseAdapter,而他使用的是cursorAdapter。

我的活动看起来像

书签.xml

列表项.xml

删除书签方法

在这里,我正在从我的数据库中删除记录并将删除按钮的文本从删除更改为已删除

0 投票
5 回答
56119 浏览

android - 如何设置 ListView 行高

我正在向您展示下面的图像,其中行的高度不同我希望行应该具有相同的高度。

在此处输入图像描述

在我的程序中,我从我解析的 XML 服务获取数据并在列表视图上显示结果,但 ListView 行的高度不同。

我已经设置了高度

android:layout_height="10dp"

但在 listView 上显示时仍然不一样。

这是我的 getView 自定义适配器:-

任何人都请我以正确的方式获得所需的结果。

提前致谢。

0 投票
2 回答
1739 浏览

java - Android ListView 行布局忽略填充

我确定这是我忽略的简单事情,但我无法弄清楚。我有一个使用具有简单布局的自定义适配器的 ListView,我的填充值似乎被忽略了。这是我希望布局的方式:

但是填充被忽略了。如果我使用嵌套的 LinearLayout 则它可以工作,但内部的 LinearLayout 似乎毫无意义。这有效:

第一个布局在 ListView 之外工作,所以我很难过。此处参考使用的样式(还指定了填充):

以及包含的布局:

这是布局膨胀的方式(我最初提供了一个 null 父级,并认为这是问题所在,但似乎不是:

0 投票
1 回答
1286 浏览

android - 通过缓存生成的 View 优化 ListView 备份自定义实现的 BaseAdapter

我在使用 listview 形成的选项卡上显示了巨大的视图。ListView 从扩展 BaseAdapter 的适配器获取其数据。每次来回移动选项卡时,Pager 往往会一次又一次地在 ListView 中创建视图,浪费我宝贵的 CPU。

好的,所以我尝试在 BaseAdapter 的 getView 中使用 parentView.getChild(atIndex) 但这只会破坏滚动 ListView 的视图。

问题,有什么方法可以通过缓存视图来优化性能?

问候,

0 投票
2 回答
1252 浏览

android - 加载和滚动时 Listview 行颜色混合

我正在根据其中一个子项的文本值设置行的背景颜色。但是,无论其文本值如何,都会设置多个背景。上下滚动时会变得更糟。适配器的代码: