问题标签 [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 回答
4299 浏览

android - 从侦听器回调方法调用 Android 的 BaseAdapter notifyDataSetChanged()

我已经为此苦苦挣扎了一段时间。在我的项目中有几个活动,包括一个 ListView 和一个扩展 BaseAdapter 的自定义适配器。他们还实现了一些接口,这些接口通常会通知它数据已更改。

但是,当我从类中实现的侦听器/接口方法调用 notifyDataSetChanged() 时,ListView 没有更新,并且没有调用任何适配器方法(getCount()、getView())。

我知道这与从哪个线程调用 notifyDataSetChanged() 的事实有关,我的意思是哪个线程,但我不太明白,也找不到对这种行为的直接解释。

作为此问题的解决方法,我使用了一个定期调用方法的处理程序,在该方法中,我查看布尔值“needsToBeUpdated”是否为真,然后调用 notifyDataSetChanged() 方法。不过,这很难看,而且我确信需要一种异步方法。

任何帮助,将不胜感激。

我正在谈论的伪代码:

编辑:当然,一旦我把这个贴在这里,我几乎没有时间找到答案......

我讨厌这样做,但我付出了更多努力寻找答案,我想我找到了答案:http: //developer.android.com/resources/articles/painless-threading.html - 这个:http ://developer.android.com/reference/android/os/Handler.html

解决方案非常简单。除了主/UI 线程之外,无法在任何其他线程中更改 UI。这就是为什么在回调方法中这样做是行不通的。但是,在 UI 线程中创建一个处理程序(例如在 onCreate() 方法中)将其连接到 UI 线程,并且可以稍后用于将事件发布到该线程。

然后,在完成 UI 调整的地方需要一个实现 Runnable 接口的内部类。

最后,在回调方法中,我们通过 Handler 将没有 UpdateListRunnable 类的事件发布到主线程:

多亏了 upadteLists() 方法在 UI 线程中运行,一切都像一个魅力。

0 投票
4 回答
5786 浏览

android - 如何将最新数据附加到android中的自定义基本适配器列表视图?

我已经使用自定义基础适配器实现了一个应用程序,用于在列表视图中显示数据。在我的应用程序中,我使用自定义基础适配器向列表视图显示了一些内容,这些内容将来自 Web 服务。我使用了一个按钮来获取最新数据来自服务。当我从服务获取最新数据时,我想将最新数据附加到底部的列表视图,而不删除列表视图中的先前数据。

我已按如下方式实现了我的应用程序:

我已经实现了基于用户单击按钮计数值将被发送到服务然后从服务获取最新的上述代码。当我从服务获取最新列表时,该列表希望追加到列表视图。

从上面的代码中,我只能得到最新的前一个正在删除。

在上述情况下,如何将最新数据(列表)附加到列表视图?

请任何人帮助我....

0 投票
3 回答
1199 浏览

android - 单击 ListView 内的按钮时如何移动到另一个活动

单击内部Activity时如何转到另一个我有一个自定义列表,我正在将其膨胀,并且我还使按钮可点击,但是当按下按钮时如何移动到另一个。ButtonListViewgetview()Activity

0 投票
1 回答
888 浏览

android - android notifyDataSetChanged() 删除列表中的原始数据

当用户滚动到列表底部时,我正在尝试将项目添加到适配器。我能够做到这一点,但是我想将新项目添加到适配器并保留已经存在的项目,但现在原始项目已被删除,只有新项目可见。关于如何实现这一目标的任何想法?

这就是我的代码在 atm 的样子:

只是为了澄清我在做什么;一旦列表的底部可见,我就会启动一个获取更多视频的 AsyncTask。在异步任务中,我将适配器设置为异步任务完成后触发的事件的侦听器 - 这有效。

onTaskFinished() 上面的最后一个方法 - 这里我将新项目添加到 4 个列表中,适配器使用这些列表来填写每个列表项,最后我通知适配器。

所以新项目都添加得很好,问题是在添加新项目之前的项目,由于某种原因被删除,或者不再可见。

忘了补充一下,我已经验证列表的长度确实增加了,这意味着它确实包含原始数据和新添加的数据

有任何想法吗?

[编辑] 添加我将适配器设置到列表视图的代码

0 投票
1 回答
283 浏览

android - 分段列表视图内存不足问题

嗨 Guyz 我已经使用 baseadapter 创建了一个分段的自定义列表视图,它工作正常,但是当我一次又一次滚动它时只有一个问题,它会崩溃并给出内存异常。我是我的 getview() 代码请帮助我。

0 投票
1 回答
239 浏览

android - 列表在 BaseAdapter 上显示错误的基础

MyAdapter 是 BaseAdapter。部分内容如下:

并在 Activity 中调用如下:

为什么图标显示错误?与 Icon 数组不同。Icon arrar always only on 是“是”。所以列表应该一次只显示一个图标。但有时显示不止一个。如何修改它?

0 投票
2 回答
542 浏览

android - 使用 BaseAdapter 从 DB 获取数据实现 ListView

我正在尝试使用来自 DB 的数据填充一个 android ListView。

我创建了一个扩展 BaseAdapter 的类,因为我需要使用节标题做一个 ListView。

那么如何实现 BaseAdapter 扩展类呢?

非常感谢。

0 投票
3 回答
763 浏览

android - 在 android 中使用基本适配器的 listview 创建自定义布局时出错

我正在使用 json 通过 url 从 mysql 数据库中获取图像和名称。我可以在列表视图中查看图像。但不能查看名称。我想在 getview 方法中创建自定义视图。但是创建自定义视图它在 logcat 中显示错误。请查看我的代码并编辑我的代码发送给我

布局xml

我想将 imageview 和 itemname 中的 mimage 附加到 textview。最后我想要 mimages 和 itemname 作为 listview

0 投票
0 回答
251 浏览

android - 第一个 Listview 使用 notifyDataSetChanged() 更新第二个 ListView 不会更新

我的(tabhost)Android 应用程序中有两个 ListView。两者都带有自定义 BaseAdapter。两个 ListView 都在请求 JSON 流。加载 JSON 流时,自定义 BaseAdapter 正在调用 notifyDataSetChanged。

当我使用 ListView 选择其中一个选项卡时,列表会完美加载,当我选择其中包含另一个列表的另一个选项卡时,列表不会加载。我选择标签的顺序无关紧要。当我选择 tab1 时,tab1 被加载,而 tab2 将无法加载列表。当我首先选择选项卡 2 时,将加载选项卡 2 的列表,当我选择选项卡 1 时,此列表将失败。

加载 JSON 流时,在自定义 BaseAdapter 中调用此方法:

getView() 方法在第一个选定的选项卡上第一次调用,它不会在第二个选定的选项卡上调用。我究竟做错了什么?

提前致谢!

0 投票
4 回答
12932 浏览

android - BaseAdapter.notifyDatasetChanged() 不更新 ListView

为什么当我调用 notifyDatasetChanged() 时我的列表视图没有更新?我可以让它显示数据的唯一方法是,再次在 ListView 上调用 setAdatper() ......我也尝试通过 runOnUIThread() 调用它,它没有改变任何东西

适配器

活动

XMLLoaderThread 工作正常,它只是 notifyDatasetChanged 似乎什么都不做......