【问题标题】:Autocomplete Edittext - Can i read from CSV file?自动完成 Edittext - 我可以从 CSV 文件中读取吗?
【发布时间】:2023-03-24 21:47:02
【问题描述】:

我有一个 ItemCode 列表,它们保存在我的 Android 应用程序的原始文件夹中的 CSV 文件中。

为了消除人为错误,我希望当用户开始输入时,edittext 将根据 CSV 文件中的项目代码自动完成。

有谁知道这是否可行?

这是我目前所拥有的:

 private void ReadItemCodes() {
    InputStream IS = getResources().openRawResource(R.raw.itemcodes);
    BufferedReader reader = new BufferedReader(new InputStreamReader(IS, Charset.forName("UTF-8")));

    String line;
    try {
        while ((line = reader.readLine()) != null) {
            //Split by commas
            String[] tokens = line.split(",");

            //Read the data
            ItemCodes+=line;  
      }
    } catch (IOException e) {
        e.printStackTrace();
    }
}

【问题讨论】:

标签: java android csv autocomplete android-edittext


【解决方案1】:

如果您只是在寻找AutoComplete Edittext 的建议,那么您可以使用string-array,它更容易,如果您有一些复杂的数据结构,那么 CSV 也很好。

如果您希望使用 CSV 来执行此操作,请按照必要的步骤阅读 CSV 文件。

这里可以参考这篇帖子https://stackoverflow.com/a/38415815/5343866

【讨论】:

  • 嗨@AbhinavSuman ..我已经将CSV文件读取到列表中。但是,在 AutocompleteTextview 的适配器中,最后一个参数必须是 String[]。如何转换?
  • 那么您从 CSV 文件中获取数据的数据类型。如果您在列表中获取它,则将其转换为 String[]。
  • 感谢您的帮助。我能够找到解决方案。见下文!
【解决方案2】:

对于将来遇到此问题的任何人。这是我发现的最好和最简单的方法!

 // Get a reference to the AutoCompleteTextView in the layout
    itemcodetextview = (AutoCompleteTextView) findViewById(R.id.itemcode);
    batchnumbertextview = (AutoCompleteTextView) findViewById(R.id.batchnumber);

    //READ FROM BATCH NUMBER CSV
    Scanner scanner = new Scanner(getResources().openRawResource(R.raw.batchnumbers));
    List<String> listbatchnumbers = new ArrayList<String>();
    while (scanner.hasNext()) {
        listbatchnumbers.add(scanner.next());
    }
    ArrayAdapter<String> adapter =
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listbatchnumbers );
    batchnumbertextview.setAdapter(adapter);
    scanner.close();

    //READ FROM ITEM CODES CSV
    Scanner scanner2 = new Scanner(getResources().openRawResource(R.raw.itemcodesofficial));
    List<String> listitemcodes = new ArrayList<String>();
    while (scanner2.hasNext()) {
        listitemcodes.add(scanner2.next());
    }
    ArrayAdapter<String> adapter2 =
            new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, listitemcodes );
    itemcodetextview.setAdapter(adapter2);
    scanner2.close();

【讨论】:

    猜你喜欢
    • 2013-07-02
    • 2019-01-29
    • 2015-10-11
    • 2014-06-17
    • 2011-03-20
    • 1970-01-01
    • 2012-11-13
    • 1970-01-01
    相关资源
    最近更新 更多