android - 将单词添加到用户词典中并从词典中检索它们

标签 android

我的应用程序中几乎没有编辑文本,用户可以在其中输入公司名称、客户名称、目的......各种东西。现在我想以编程方式将这些单词添加到字典中,因此他们不必每次都重新输入整个单词,相反,字典应该在他们开始输入时建议该单词。

我在网上搜索了同样的内容,得到了类似的内容

UserDictionary.Words.addWord(getActivity(), et_client_name.getText().toString(), 1, "", locale);

我们需要向应用程序授予两个权限:

<uses-permission android:name="android.permission.WRITE_USER_DICTIONARY"/>
<uses-permission android:name="android.permission.READ_USER_DICTIONARY"/>

但我的问题是:一旦我使用上述语句添加单词;如何从字典中检索它并在用户开始输入时立即建议用户。

感谢任何帮助或引用任何好的教程!

最佳答案

我自己设法找到了我的问题的解决方案......回答这个问题希望它可以帮助某人作为同类问题的引用:

public class HomeActivity extends Fragment implements TextWatcher {

    String itemClientName[] = {};
    ArrayAdapter<String> clientNameAdapter;
    ArrayList<String> clientNameList = new ArrayList<String>();

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        AutoCompleteTextView et_client_name = (AutoCompleteTextView) findViewById(R.id.et_client_name);
        getFromDictionary();
        suggestClientName();
        et_client_name.addTextChangedListener(this);
    }

    public void getFromDictionary() {
        System.out.println("Inside getFromDictionary");
        ContentResolver resolver = getActivity().getContentResolver();
        String[] projection = new String[]{BaseColumns._ID, UserDictionary.Words.WORD};
        cursor = resolver.query(UserDictionary.Words.CONTENT_URI, projection, null, null, null);
        if (cursor.moveToFirst()) {
            do {
                long id = Integer.parseInt(cursor.getString(0));
                word = cursor.getString(1);
                // Prepare list for autoCompletion
                System.out.println("Inside prepareMyList" + word);
                if (!clientNameList.contains(word))
                    clientNameList.add(word);
                System.out.println("clientNameList::" + clientNameList);
                System.out.println("Word from dictionary is::" + word);
                // do something meaningful
            } while (cursor.moveToNext());
        }
    }

    public void suggestClientName() {
        String newAdd1 = et_client_name.getText().toString();
        if (!clientNameList.contains(newAdd1)) {
            clientNameList.add(newAdd1);
            // update the autocomplete words
            clientNameAdapter = new ArrayAdapter<String>(getActivity(),
                    android.R.layout.simple_dropdown_item_1line, clientNameList);
            et_client_name.setAdapter(clientNameAdapter);
        }
        // display the words in myList for your reference
        String s = "";
        for (int i = 0; i < clientNameList.size(); i++) {
            s += clientNameList.get(i) + "\n";
        }
    }
}

关于android - 将单词添加到用户词典中并从词典中检索它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18122372/

相关文章:

java - 输入流返回 NullPointerException (Java)

Android ...如何确定我是否在使用 wifi 互联网?

android - 无法使用 Proguard 在 Android 项目上设置 Wiremock(重复 Zip 条目错误)

c# - OPPO R7g 上的 Xamarin 调试崩溃

android - 双击 logcat 堆栈跟踪中的项目会打开 .class 文件(有时)

android - Play 商店是否计算预装的应用程序?

Android - 使位图适合屏幕

java - 防止应用程序因 java.io.IOException : write failed: ENOSPC (No space left on device) 崩溃

Android通知,振动但没有声音

android - 如何在 android studio 中了解开发者代码责备