Hallo,
ich habe einen Code für eine veränderbare Liste geschrieben die auch eig ganz gut Funktioniert. Lediglich beim Speichern und wieder Auslesen der Datei habe ich Probleme.
Hier mein Code:
Wenn ich eine neue Zeile hinzufüge klappt es zwar, aber sobald ich eine neue Zeile hinzufüge überschreibt er die vorherige. Das macht sich aber erst nach dem schließen und wieder öffnen der App bemerkbar.
Außerdem startet die App nicht wenn ich diese erste Leere Zeile(String[] names) nicht der ArrayList übergebe. Ich weiß dass das leicht zu beheben ist aber ich kenne den Code dafür nicht ^^
Achja zudem soll die App mit onItemLongClick die jeweilige Zeile auch aus der Datei entfernen.
Jemand ne Idee?
Ich bin für jede Hilfe Dankbar.
Gruß Aydin
ich habe einen Code für eine veränderbare Liste geschrieben die auch eig ganz gut Funktioniert. Lediglich beim Speichern und wieder Auslesen der Datei habe ich Probleme.
Hier mein Code:
Java:
Toolbar mToolbar;
ActionBar mActionBar;
public ArrayAdapter<String> adapter;
private EditText etInput;
public ArrayList<String> arrayList;
int position;
FileOutputStream fos;
String filename = "cityy";
private Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
mToolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(mToolbar);
mToolbar.setTitleTextColor(Color.GREEN);
mToolbar.setSubtitle("Ey woas geyt?");
mToolbar.setSubtitleTextColor(Color.BLACK);
if (Build.VERSION.SDK_INT >= 21) {
mToolbar.setElevation(25);
}
mActionBar = getSupportActionBar();
if (mActionBar != null) {
mActionBar.setDisplayHomeAsUpEnabled(true);
}
context = MainActivity.this;
ListView lvListe = (ListView) findViewById(R.id.lvlist);
etInput = (EditText) findViewById(R.id.etInput);
Button btnAdd = (Button) findViewById(R.id.btnAdd);
String[] names = new String[]{""};
arrayList = new ArrayList<>();
arrayList.addAll(Arrays.asList(names));
try {
InputStream is = openFileInput(filename);
BufferedReader br = new BufferedReader(new InputStreamReader(is));
String line;
while((line = br.readLine()) != null){
arrayList.add(line);
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
// <> == <String>
adapter = new ArrayAdapter<>(this, android.R.layout.simple_list_item_1, arrayList);
lvListe.setAdapter(adapter);
lvListe.setOnItemClickListener(this);
lvListe.setOnItemLongClickListener(this);
btnAdd.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String strInput = etInput.getText().toString();
if (!TextUtils.isEmpty(strInput)) {
adapter.add(strInput);
etInput.setText("");
adapter.notifyDataSetChanged();
try {
fos = context.getApplicationContext().openFileOutput(filename, MODE_PRIVATE);
PrintWriter pw = new PrintWriter(fos);
// PrintWriter pw = new PrintWriter(openFileOutput(filename, MODE_PRIVATE);
pw.println(strInput);
pw.close();
} catch (Exception e) {
e.printStackTrace();
}
}
}
});
}
@Override
public void onItemClick(AdapterView<?> adapterView, View view, int position, long id) {
Toast.makeText(this, arrayList.get(position), Toast.LENGTH_SHORT).show();
Intent intent = new Intent(Intent.ACTION_WEB_SEARCH);
intent.putExtra(SearchManager.QUERY, "Wetter " + arrayList.get(position));
startActivity(intent);
}
@Override
public boolean onItemLongClick(AdapterView<?> adapterView, View view, int i, long id) {
AlertDialog.Builder builder1 = new AlertDialog.Builder(this);
builder1.setMessage("Möchtest du die Stadt aus dem Verzeichnis löschen?");
builder1.setCancelable(true);
builder1.setPositiveButton("Ja", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
arrayList.remove(position);
adapter.notifyDataSetChanged();
dialog.cancel();
}
});
builder1.setNegativeButton("Nein", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int id) {
dialog.cancel();
}
});
AlertDialog alert11 = builder1.create();
alert11.show();
return true;
}
Wenn ich eine neue Zeile hinzufüge klappt es zwar, aber sobald ich eine neue Zeile hinzufüge überschreibt er die vorherige. Das macht sich aber erst nach dem schließen und wieder öffnen der App bemerkbar.
Außerdem startet die App nicht wenn ich diese erste Leere Zeile(String[] names) nicht der ArrayList übergebe. Ich weiß dass das leicht zu beheben ist aber ich kenne den Code dafür nicht ^^
Achja zudem soll die App mit onItemLongClick die jeweilige Zeile auch aus der Datei entfernen.
Jemand ne Idee?
Ich bin für jede Hilfe Dankbar.
Gruß Aydin
Zuletzt bearbeitet von einem Moderator: