gpt4 book ai didi

java - 在 android 中加载自动完成 View 建议的最佳方式

转载 作者:行者123 更新时间:2023-11-30 09:32:28 25 4
gpt4 key购买 nike

这是我在 android 中的第一个应用程序。我想知道这是否是最好的方法。我正在尝试使用来自 mysql 数据库的数据加载自动完成 TextView 。此数据是根据用户输入的文本从数据库中检索的。

我就是这样做的。

1. 向自动完成 View 添加了一个文本监视监听器。在 afterTextchanged 方法中,我调用了一个异步任务,它使用 php web 服务连接到 db 并从 mysql 表中检索数据并加载到数组中。在执行该任务后,我正在设置适配器。(阵列适配器)。

我的问题是,为输入/修改的每个字母调用 aftertextchanged,db 调用发生在这里。所以,把所有的数据库代码都放在这里,好吗?加载列表也需要时间。

有没有其他最好的方法。

感谢您的回复。

最佳答案

当一个新字符被添加到输入框时,取消正在进行的获取建议的 AsyncTask 并使用新参数启动一个新的。并向用户表明正在加载建议,以便用户可以根据需要选择等待。

这里有一篇文章解释了取消 AsyncTask 的理想方法:Ideal way to cancel an executing AsyncTask

更新:

如果您在第一个字符输入时缓存 Asynctask 的所有结果(无需取消),您可以随着用户在编辑框中键入更多字符而逐渐加速,因为这将是初始列表将包含所有以第一个字符开头的字符串。以下所有结果(在新字符上,即 2nd、3rd..)将是此列表的子集。使用 ArrayAdapter 管理列表。编辑框应该是 AutoCompleteTextView.

这样你只需要为第一个字符运行 asynctask。

更新 2:您可以在 onCreate 中尝试此代码。听起来是个更好的选择..

    AutoCompleteTextView act = 
(AutoCompleteTextView)findViewById(R.id.act_contact);
ContentResolver content = getContentResolver();
Cursor cursor = content.query(
ContactsContract.Contacts.CONTENT_URI,
PEOPLE_PROJECTION, null, null, null);
ContactListAdapter adapter = new ContactListAdapter(this, cursor);
act.setAdapter(adapter);

关于java - 在 android 中加载自动完成 View 建议的最佳方式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12528105/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com