2017-06-23 21 views
-1

我試圖在AutoCompleteTextView中爲用戶提供建議。該列表存儲在assets文件夾中名爲jobz.txt的文件中,該文件夾使用Scanner方法進行檢索。 txt文件lookes喜歡這樣某物(這個列表很長 - 2000線,這就是爲什麼我需要把它放在一個.txt文件):當字符串Array從.txt文件中被重新獲取時,AutoCompleteTextView不顯示建議

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時,它完美地工作。

+1

此行'mString = NE w String [] {m​​String + s.nextLine()};'不是你認爲的那樣 – Yazan

回答

0

只使用一個列表,從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; 
} 
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; 
} 
相關問題