从.txt文件中重新提供字符串数组时,AutoCompleteTextView不显示建议

时间:2017-06-23 22:41:07

标签: android autocompletetextview

我正在尝试在AutoCompleteTextView中向用户提供建议。该列表存储在assets文件夹中名为jobz.txt的文件中,该文件使用Scanner方法检索。 txt文件看起来像这样(这个列表真的很长 - 2000行,这就是为什么我需要把它放在.txt文件中):

Teacher Doctor Translator ...

这是我的代码

public class HomeActivity extends AppCompatActivity {


    String jobs [] = {};


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);


        jobs = readString("jobz.txt");

        ArrayAdapter<String> adapter = new ArrayAdapter<String>
                (this, android.R.layout.select_dialog_item, jobs);

        AutoCompleteTextView actv = (AutoCompleteTextView) findViewById(R.id.professionActv);
        actv.setThreshold(1);
        actv.setAdapter(adapter);

    }

    public static String[] readString(String file){
        String[] mString ={};
        try {
            Scanner s = new Scanner(new File(file));
            while (s.hasNextLine()){
                mString = new String[]{mString + s.nextLine()};
            }
        }catch (FileNotFoundException e) {

        }
        return mString;
    }

}

应用程序运行正常,但它没有提供任何建议。

仅供参考我即使在logCat中也没有任何错误 但是当我在onCreate方法中使用典型的stringArray时,它可以很好地工作。

2 个答案:

答案 0 :(得分:0)

只需使用List来存储txt文件中的值,然后将其解析为字符串数组,如下所示:

public static String[] readString(String file){

List<String> values = new ArrayList<>();

    try {
        Scanner s = new Scanner(new File(file));
        while (s.hasNextLine()){
            values.add(s.nextLine());
        }
    String[] result = new String[values.size()];
     for (int i = 0; i < values.size(); i++) {
      result[i] = values.get(i).toString();
     }
      return result;
    }catch (FileNotFoundException e) {
         e.printStackTrace();
    }
    return null;
}

答案 1 :(得分:0)

以下代码不会向数组添加项目:

mString = new String[]{mString + s.nextLine()};

修改您的方法如下:

public static String[] readString(String fileName) {
    List<String> contents = new ArrayList<String>();
    try {
        File file = new File(fileName);
        Scanner scanner = new Scanner(file);
        while (scanner.hasNext()) {
            System.out.println(scanner.next());
        }
        scanner.close();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } 

    String[] arrContent = contents.toArray(arrContent);
    return arrContent;
 }