Soll ja auch eine leere Liste sein, in die ich dann Items von Liste 1 rein schieben möchte.
Oder geht das dann so nicht?
Soll ja auch eine leere Liste sein, in die ich dann Items von Liste 1 rein schieben möchte.
Oder geht das dann so nicht?
wie jetz geht es?
Du meintest ja, dass der String einen leere Eintrag hat. Wobei das ja Absicht ist , da die 2. Liste am Anfang leer sein soll um dann die Daten der 1. Liste in die 2. zu verschieben.
Und die Frage ist ob der String dann leer sein kann, da die Liste ja eben auch leer sein soll oder ob ich das so nicht machen kann?
2. Frage ist: Wie du schon meintest müsste ich die Daten speichern, da wenn ich in die 2. Activity wechsel, dann die 1. Activity in die Ausgangsposition wechselt.
Speichern tu ich ja in dem Fall mit SharedPreference. Aber wie genau sieht das dann im Code aus?
muss ich mir auch erst anschauen mache das immer mit SQL . Prepetence benutze ich nur für Vorstellungen . Die der User in meine app einstellen kann.
Wie liest du die Daten aus deiner SharedPreference aus? Poste mal den Code abschnit.
wie hast du die SharedPreference Datei denn überhaupt gefüllt. Von Hand?
Was soll das ganse den überhaupt werden? von wo willst du später mal deine Daten für die erste Activity holen und sie dann in deine neue Liste zu verschieben. Denke das ist dein Hauptanliegen.
Schau mal hier finde der Junge macht das richtig gut. von seinen Videos kannst du viel lernnen.
Die Möglichkeit mit SQL ist denke ich auch besser allerdings fehlt mir bei SQL das Wissen um es gut genug hinzubekommen.
Die 1. ArrayList holt sich die Einträge aus einer JSON Datei.
Dann schaue dir das erst noch mal an wie das mit den Json Datein geht. Lesen kanst du ja. Dann wirst du auch schreiben hin bekommen.
Recipe.getRecipesFromFile("recipes.json", this); ist deine Zeile zum Auslesen. Weiss es jetzt auch nicht genau. Vieleicht mit
setRecipesFromFile(....
übrigens.....der Junge, der das Video gemacht hat (DerAndroidPro), hat noch mehr Videos und auch einige Repos in GitHub veröffentlicht. Sehr viel interessantes dabei. Man kann ihn auch bei Facebook finden.
Evtl ist er ja bereit, sich Deines Problems mal anzunehmen und das ja mal als kleines Tut zu digitalisieren...einfach mal anfragen
Gruß Carsten
Ja ich weiß habe ich mir von anfang an vor einiger Zeit reingezogen. Deshalb habe ich es die auch empfohlen. Schön dass es die gefällt. Wieso mein Problem?
Ich kenne den Jungen der das Video gemacht habe aber er hat nicht so viel Zeit für die einzelnen Sachen aber trotzdem danke für den Tipp
Hab schon so einiges probiert und komme ehrlich gesagt nicht weiter. Es kann doch nicht so schwer sein es hinzubekommen das eine Activity die Veränderungen speichert die an ihr unternommen werden und diese bei Neustart wieder aufzurufen
@'jogimuc:
war nicht auf Dich bezogen, was das Problem anging, sondern nur mein Statement mit dem Jungen.
War sonst an GenetixX gerichtet .... hmm .. muss wohl doch noch an meiner Schreibweise feilen, das das nicht so verwirrend gedeutet werden kann
toad nicht schlimm ich hatte auch nicht richtig gelesen bzw. Nicht gesehen das es von dier kam. Wo ich es bemerkt hatte war die Nachricht schon raus. War auch nur am Handy Display zu klein. Alles gut.
genetixx ich habe dir doch ein Beispiel grundgerüst geschickt sogar mit Kommentaren im Code. Wo du auch deinen eigenes listen layout erstellen kannst.Wenn du nicht weißt wie du in eine json Datei umgehst kann ich dir leider auch nicht helfen mache ich nie. Dann speichere es einfach in eine normale Text Datei. Wie du in Java mit Dateien arbeitest solltest du eigentlich wissen wird in allen Java Brüchern beschrieben. Das sollte Java Grund wissen sein. Habe im moment leider keine Zeit mich an den Rechner zu setzen bin nur am Handy. SQL scheint mir für dich im Moment nicht geeignet zu sein. Dies alles zu erklären dauert mir zu lange.
Für den Code bin ich auch sehr dankbar aber ich brauche meinen jetzigen weil der im restlichen Code implementiert ist und den kann ich leider nicht einfach ersetzen.
Wie gesagt eigentlich dürfte das doch nicht so schwer sein
Hallo habe gesehen das du das selbe Thema schon bei AndroidPit hast dort schreibst du das es geht.
Sieht mir nicht so aus.
Zum Tehma wie seiht dein Daten Typ "Recipe" eigentlich aus ?
Gaube auch du kennst nicht den Unterschied eines Arrys "String[]" und eine ArryList "ArryList<String>"
sonst hättest du Post Nr.20 verstanden.
ein Arry z.B.
int[] test;
test = new int[3];
und
int[] test = { 1,2,3); ist das gleiche. Dies ist nur eine kurtzform. das ganse ist arber keine "Liste" nur ein Arry mit feste Länge und anzahl an Felder(Speicherplätze) . Du kanst da zu Laufzeit keine Felder hinzuügen oder löschen , Werte verändern ja.
Bei einener Arrylist ist es dynamische Speicher den du zur laufzeit verändern kanst. Somit Einträge hinzufügen und löschen.
Mekmal sind die Spitzen Klammern " < > ". Dies scheint dir noch nicht klar zu sein.
Bei androidPit wurde dir auch erklärt das die Liste und der Adapter zwei Dinge sind, und du nur die Liste verändern must und anschliesend sie neu Zeichen lassen must mit notifyDataSetChanged();
Deine ListView is sozusagen dein Adapter. Der Adapter holt sich die Daten aus deiner " Liste" und Zeigt sie an mit einfachen worten gesagt. Vieleicht kannst du es dir so besser vorstellen.
teste mal so.
Du hast in der zweiten Activity deine Liste nur Global Deklarirt aber nicht inzalisirt.
dies macht man mit den "new" Operator.
und in der OnCreate metode erstellst du eine neue Liste wo du daten aus einer Datei ausliest. Aber nirgentwo Daten gespeichert werden.
public class TestActivity extends AppCompatActivity {
final static ArrayList<Recipe> recipeList2 = new Recipe();
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
mListView = (ListView) findViewById(R.id.testlist2);
String[] listItems = new String[recipeList2.size()];
for(int i = 0; i < recipeList2.size(); i++){
Recipe2 recipe2 = recipeList2.get(i);
listItems[i] = recipe2.title;
}
final RecipeAdapter adapter = new RecipeAdapter (this, recipeList2);
mListView.setAdapter(adapter);
final Context context = this;
mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Recipe selectedRecipe = recipeList2.get(position);
recipeList2.remove(selectedRecipe);
adapter.notifyDataSetChanged();
}
});
};
private ListView mListView;
}
Alles anzeigen
Hallo GenetixX
mit deiner Koch App bei AndoidPit hast du dir ein grosses Ziehl gesetz.
Du flunkerst da schon gans schön nur noch die Suchroutine würde fehlen.
Hoffe das du dein Ziehl erreichst.
Also erstmal vielen Dank für die Mühe die du dir hier machst. Ich dachte damals, dass nur die Suchroutine fehlen würde und hätte nicht gedacht, dass es so schwer werden würde eine Liste von Daten zu speichern.
Meine Recipe.class sieht so aus:
import android.content.Context;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.io.InputStream;
import java.util.ArrayList;
public class Recipe {
public String title;
public String description;
public String imageUrl;
public String instructionUrl;
public String label;
public static ArrayList<Recipe> getRecipesFromFile(String filename, Context context){
final ArrayList<Recipe> recipeList = new ArrayList<>();
try {
// Load data
String jsonString = loadJsonFromAsset("recipes.json", context);
JSONObject json = new JSONObject(jsonString);
JSONArray recipes = json.getJSONArray("recipes");
// Get Recipe objects from data
for(int i = 0; i < recipes.length(); i++){
Recipe recipe = new Recipe();
recipe.title = recipes.getJSONObject(i).getString("title");
recipeList.add(recipe);
}
} catch (JSONException e) {
e.printStackTrace();
}
return recipeList;
}
private static String loadJsonFromAsset(String filename, Context context) {
String json = null;
try {
InputStream is = context.getAssets().open(filename);
int size = is.available();
byte[] buffer = new byte[size];
is.read(buffer);
is.close();
json = new String(buffer, "UTF-8");
}
catch (java.io.IOException ex) {
ex.printStackTrace();
return null;
}
return json;
}
}
Alles anzeigen
Mein Ziel ist es halt in dem Fall eine Liste mit Einträgen zu haben, in der der User einzelne Sachen auswählen kann und diese einer anderen Liste hinzufügen kann aus der dann später die Suchroutine suchen soll.
Und dies sollte wenn möglich ein ansprechendes Layout haben, deswegen der Custom Adapter und die umstände.
Und mit "funktionieren" meinte ich, dass es funktioniert Einträge aus der Liste zu löschen in der Laufzeit :).
Bin das Thema hier schon eine ganze Weile am verfolgen.
Um mal einen anderen Ansatz rein zu bringen, kennst du das Framework Hibernate?
Ja hab ich schon mal von gehört. Ist SQL ähnlich. Allerdings weiß ich nicht wie man es korrekt anwendet falls du das meinst.
mal ganz ehrlich hast du die Classe selber geschrieben oder irgent wo kopiert?
in dieser Kalsse müsstest du auch Metoden zum Speicher einfügen.
Das das löschen in der ersten Activity geht sehe ich.
nur der zugriff auf die zweite Liste der zweiten Activity ist falsch.
Schaue dier meinen letzen geposteten Code an. Wie kommst du zu dem Daten Typ "Recipe2" haste einfach die Klasse kopiert und umbenant? das brauchst du nicht.
Ich hab mir davor ein Tutorial angeguckt um zu lernen wie das ganze funktioniert und hab erstmal den Code genommen um damit ein paar Sachen auszuprobieren.
In meinem eigentlich Projekt ist er nicht drin also keine Sorgen habe nicht vor zum Schluss Urheberrechtsverletzung zu betreibe ^^.
Mit Recipe 2 sollte erstmal ein Test sein ob damit der Fehler behoben wäre. Und wollte dann mit der eigentlichen Recipe.class weiterarbeiten hat aber bis her nicht so funktioniert wie es soll.
Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!