问题标签 [android-arrayadapter]

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 投票
2 回答
4990 浏览

android - ArrayAdapter 和 android:textFilterEnabled

我创建了一个包含 ListView 的布局。

这个 ListView 中显示的数据并不太复杂,它主要是一个 Array,在扩展 Activity 启动时传递。

行本身存在于图标和文本之外,因此存在 ImageView 和 TextView。为了填充 ListView,我使用 ArrayAdapter 只是因为传递了一个包含所有应该显示的文本项的数组。

现在我希望实际上能够过滤这些,因此我找到了要在 ListView xml 声明中添加的 android:textFilterEnabled 参数......现在搜索字段显示得很好但是当我输入一些字母时它不会过滤但是它只会删除整个列表。我发现那是因为 textfilter 不知道它应该过滤什么。

所以现在我的问题是:我知道我需要告诉 textfilter 它应该过滤什么,我的数组仍然充满了应该被过滤的文本,那么我如何将这两者结合起来?

我已经看到扩展 CursorAdapter 的示例,但同样,我没有 Cursor,我不想调用 DB 我想用数据重新利用我的 Array,显然是 ArrayAdapter 本身,以便数据将在屏幕上体面地表示(即使用我的 ImageView 和 TextView 布局)。

如何才能做到这一点?

0 投票
1 回答
692 浏览

android - 为什么我的按钮可以触发 UI 滚动而我的 Activity 中的 TimerTask 不能?

长话短说:我的活动方法更新并通过 ArrayAdapter 滚动 ListView 就像它应该的那样,但是用于轮询消息(显示在 ListView 中)的内部 TimerTask 方法更新 ListView,但不滚动它。为什么?

很长的故事:

我有这个布局的聊天活动:

内部 listView(带有 id messageList)由一个 ArrayAdapter 填充,它扩展下面的 XML 并替换其中的字符串。

问题是:在主布局中,我有一个用于聊天消息的 EditText 和一个用于发送消息的 Button。我已经在活动范围内声明了适配器:

因此,在 sendMessage(View v) 内部,notifyDataSetChanged() 会相应地滚动 ListView,这样我就可以自动看到最新的聊天消息:

但是在我的 TimerTask 中,我不能。ListView 已更新,但它不会自动滚动。我究竟做错了什么?

如何强制滚动到底部?我尝试使用 lv.getBottom()-lv.getHeight() 使用 scrollTo,但没有奏效。这是 Android SDK 中的错误吗?

对不起大量的代码,但我想这样问题就很清楚了。

0 投票
3 回答
2211 浏览

android - Android - 只有 1 个可扩展项目的 ListView

我有一个带有复选框的列表视图,它使用适配器并且效果很好。

而且我知道如何使整个列表可扩展。

但是,可以只扩展一个项目,还是必须是整个列表?如果是这样,它是如何完成的?

0 投票
4 回答
17113 浏览

android - 滚动时,ArrayAdapter 顺序中的 ListView 混淆了

我在自定义 ArrayAdapter 中有一个 ListView,它在每一行中显示一个图标 ImageView 和一个 TextView。当我使列表足够长以让您滚动浏览它时,顺序开始正确,但是当我开始向下滚动时,一些较早的条目开始重新出现。如果我向上滚动,旧的顺序会改变。重复执行此操作最终会导致整个列表顺序看似随机。所以滚动列表要么导致子顺序发生变化,要么绘图没有正确刷新。

什么可能导致这样的事情发生?我需要将项目显示给用户的顺序与它们添加到 ArrayList 的顺序相同,或者至少保持一个静态顺序。如果我需要提供更详细的信息,请告诉我。任何帮助表示赞赏。谢谢。

0 投票
2 回答
3666 浏览

android - 如何创建仅包含某些可扩展项目的列表?

我正在尝试用一些可扩展的项目和一些单项组成一个列表。我希望拥有它,以便在单击单个项目或可扩展列表子项时,我可以根据项目的文本调用意图。

我想可扩展列表会起作用,但是有没有办法在可扩展列表中设置项目,以便它们没有可扩展列表图标?我应该使用字符串数组以外的东西吗?

做这个的最好方式是什么?

谢谢

下面是我不完整的代码,我想在“亚特兰大”和“波士顿”项目之间插入项目“1区”、“2区”、“3区”或作为亚特兰大的子集:

0 投票
2 回答
12379 浏览

android - Android中的精美动态列表:TableLayout vs ListView

需要有不那么微不足道的动态列表,其中每条记录由几列(文本、按钮)组成。它应该看起来像:

起初,实现这一目标的明显方式似乎是TableLayout. 我期望在 res/layout/*.xml 中指定布局/样式数据,并用 java 代码中的一些数据集填充它(如ListView,它可以TextView在 *.xml 中指定项目并将其绑定到某个数组使用ArrayAdapter)。但是玩了一段时间后,我发现所有可能的方法都是完全以TableLayout编程方式填充。尽管如此,直接在 java 代码中创建TableRowTableRow设置布局属性似乎还不够优雅。

所以问题是:我走对了吗?真的是TableLayout最好的视图来实现这一点吗?也许扩展ListView或其他方式来满足这些要求更合适?

0 投票
2 回答
26398 浏览

android - Android:notifyDataSetChanged() 在方向改变后不更新列表视图

我有一个半复杂的问题,希望这里的人能够帮助我。

在单击事件上,我创建一个线程并基于方法启动一个长时间运行的操作。长时间运行的任务完成后,它会回调另一个方法,该方法会向处理程序发送一个帖子:

调用 Runnable:

最后,这是我的 updateDisplay() 方法正在做的事情:

当我正常执行此操作时,它的效果很好。但是,如果我在长时间运行的操作运行时更改方向,它就不起作用。它确实正确地进行了回调,并且提醒列表中确实有项目。但是当它到达这条线时:

没发生什么事。奇怪的是,如果我再次提交并让它再次运行整个过程(不改变方向),它实际上会更新两次视图,一次用于上一次提交,一次用于下一次。因此,视图会使用第一次提交的结果更新一次,然后再使用第二次提交的结果更新一次。所以适配器 DID 获取了数据,它只是没有刷新视图。

我知道这与方向变化有关,但我一生都无法弄清楚原因。任何人都可以帮忙吗?或者,任何人都可以提出一种处理具有方向变化的线程的替代方法吗?

巴拉

0 投票
4 回答
9679 浏览

java - ArrayAdapter.setAdapter上的android新手问题空指针

我一直在放慢学习和构建我的第一个 Android 应用程序的速度。我对 Java 非常陌生,但已经在 C#、VB.NET(过去)、Objective-C(商店中有 6 个应用程序)和 Fortran(过去 waaaaaaaaaaaaaaaaaaaay ;)

所以我刚从海外收到一个 htc legend(我不在美国),我买它是为了有一个体面的中级设备进行开发(它运行的是非 root 的 adnroid 2.1)

我一直在开发的应用程序是目标级别 4(android 1.6)。它使用带有 .mp3 扩展名的 5 Mb sqlite3 数据库,以避免在 apk 中进行压缩以及从资产正确复制到系统文件夹。

在模拟器上一切正常,在设备上我看到复制数据库后应用程序的文件大小与我在模拟器上看到的完全匹配。

现在,在我使用列表视图和微调器的主要活动中,我通过两个数组适配器绑定了一些数据。在设备上运行时一切顺利。但是当试图在设备上运行这部分代码时:

两个名称.setAdapter(adapterShapes);
& types.setAdapter(adapterTypes);

给我一个空指针异常。

我在mac下使用eclipse,LogCat窗口抛出:

06-25 18:41:37.842:错误/AndroidRuntime(9523):未捕获的处理程序:线程主因未捕获的异常而退出

06-25 18:41:37.891: 错误/AndroidRuntime(9523): java.lang.RuntimeException: 无法启动活动 ComponentInfo{com.davidhomes.steel/com.davidhomes.steel.mainAct}: java.lang.NullPointerException

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2596)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在

android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2621)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.ActivityThread.access$2200(ActivityThread.java:126)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1932)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.os.Handler.dispatchMessage(Handler.java:99)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.os.Looper.loop(Looper.java:123)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.ActivityThread.main(ActivityThread.java:4595)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 java.lang.reflect.Method.invokeNative(Native Method)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 java.lang.reflect.Method.invoke(Method.java:521)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)

06-25 18:41:37.891:错误/AndroidRuntime(9523):在 dalvik.system.NativeStart.main(本机方法)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 由: java.lang.NullPointerException 引起


-------------------------------------------------- ------------ 06-25 18:41:37.891: 错误/AndroidRuntime(9523): at com.davidhomes.steel.mainAct.onCreate(mainAct.java:183)

-------------------------------------------------- ------------

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2544)

06-25 18:41:37.891: 错误/AndroidRuntime(9523): ... 11 更多

06-25 18:46:38.252: 错误/ActivityManager(99): 设置顶部应用更改失败!

第 183 行是第一个 setAdapter 调用 (designations.setAdapter(adapterShapes);),当我将其注释掉时,第二个 setAdapter 是一个破坏代码

我在这里有点迷茫,当从模拟器和设备运行时,适配器会在日志窗口中显示正确数量的项目。

我承认自己是 java 和 android 的菜鸟,所以非常感谢任何帮助。

问候
大卫

0 投票
3 回答
15633 浏览

android - ListView 与 ArrayAdapter 和 ViewHolder 将图标添加到错误的项目

我有一个ListView使用ArrayAdapter. 从微调器中选择名称时,该名称以及显示他们是男性还是女性的图标将添加到ListView.

大多数情况下一切都很好(名称与图标一起正确添加到列表中)。但是显示性别的图标被添加到ListView. 名称被添加到列表底部,但图标被放置在列表顶部的名称处。我不知道这是否是我使用的方式,ViewHolderAndroid 网站上的文档为零。

0 投票
1 回答
37895 浏览

android - 无法在 ListView 中修改 ArrayAdapter:UnsupportedOperationException

我正在尝试制作一个包含名称的列表。该列表应该是可修改的(添加、删除、排序等)。但是,每当我尝试更改 ArrayAdapter 中的项目时,程序就会崩溃并java.lang.UnsupportedOperationException出现错误。这是我的代码:

我尝试了插入、删除和清除方法,但都没有奏效。有人会告诉我我做错了什么吗?