Ich möchte eine AutoCompleteTextview erstellen, die zuvor gespeicherte Vorschläge aus dem internen Speicher lädt. Ich habe die Strings erfolgreich aus dem internen Speicher in ein String-Array geladen (ich habe das Logging zur Überprüfung benutzt ....).AutoCompleteTextView zeigt keine aus dem internen Speicher geladenen Zeichenfolgen an.
dann wie ich das String-Array auf einen Adapter geladen und den Adapter auf die AutoCompleteTextview setzen, danach zeigt die AutoCompleteTextview nicht die Vorschlag-Strings, die ich aus dem internen Speicher geladen, aber es zeigt die Vorschlags-String (s) was ich zur Laufzeit in das String-Array geladen habe.
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//this is the array where i am trying to save my data into
loadedString=new String[1];
loadedString[0]="the pre-loaded String"
adapter = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, loadedString);
atcv = (AutoCompleteTextView) findViewById(R.id.autocomplete);
int objectCounter = 0;
try {
FileInputStream fis = this.openFileInput(FILENAME);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String temp;
while ((temp = br.readLine()) != null) {
//here i am calculating the lines of my data-file
//as 1 line contains 1 string object
//so that i can initialize the string array
objectCounter++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
//intializing the array
// objectCounter+1 and index =1 because i loaded an object before
loadedString = new String[objectCounter+1];
int index = 1;
try {
FileInputStream fis = this.openFileInput(FILENAME);
InputStreamReader isr = new InputStreamReader(fis);
BufferedReader br = new BufferedReader(isr);
String temp;
while ((temp = br.readLine()) != null) {
loadedString[index] = temp;
index++;
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
adapter.notifyDataSetChanged();
atcv.setAdapter(adapter);
atcv.setThreshold(1);
}
dies ist die Methode, die ich die Daten helfen
public void saver(View view) {
String string;
if(actv.getText()!=null){
advice = advices.getText().toString();}
advice=advice+"\n";
try{
FileOutputStream fos = openFileOutput(FILENAME, context.MODE_APPEND);
fos.write(advice.getBytes());
fos.close();
Toast.makeText(this, "File saved" , Toast.LENGTH_LONG).show();
}
catch (Exception e){
Toast.makeText(this, "File could not be saved", Toast.LENGTH_LONG).show();
}
Bitte sparen verwenden. Beachten Sie, dass ich die Methode notifyDataSetChanged() verwendet habe. Ich werde wirklich dankbar sein.