Erste Schritte Array auslesen, ...

OJMD

Mitglied
Hallo zusammen,

ich habe folgenden Beispielcode gefunden:
Java:
private void addDataToList(){
	    
    	HashMap<String, Object> map1 = new HashMap<String, Object>();
    	
	map1.put("icon", R.drawable.user_image1);
    	map1.put("name", "User 1");
    	map1.put("phone", "0002225566");
    	map1.put("town", "New York");
    	
    	HashMap<String, Object> map2 = new HashMap<String, Object>();
    	map2.put("icon", R.drawable.user_image2);
    	map2.put("name", "User 2");
    	map2.put("phone", "0004588923");
    	map2.put("town", "London");
    	
    	
    	myList.add(map1);
    	myList.add(map2);
    }

Jetzt möchte ich gern diese Methode so umschreiben das ich ihr ein Array übergebe in denen die Werte für die einzelnen Punkte stehen.
Das letzten Endes myList dynamisch erzeugt wird je nach dem wieviel Zeilen im Array enthalten sind.

Kann mir hierzu jemand ein Tipp geben?

Mfg OJMD
 
Ich wuerde mal sagen, dass die Hashmap fuer dein vorhaben nicht gut gewaehlt ist.
Schreibe eine Klasse, dann kannst du auch eine methode schreiben, die arrays einließt.
 
Hallo TKausL,

du meinst ungefähr so?

Java:
public class Datensatz
{
   public String 	icon;
   public TEXT    name;
   public TEXT    phone;
   public TEXT	town;
}

Und wie dann weiter?


Gruß OJMD
 
Prinzipiel ja, aber die Datentypen stimmen nicht. Ein Image ist sicherlich nicht vom Typ String, Name, Phone und Town hingegen sind welche (TEXT kenne ich nicht und wenn es einen Datentypen TEXT gibt, sollte er Text geschrieben werden).


Schreib für deine Klasse noch getter und setter bzw. einen Konstruktor, dem du alle Parameter übergibst.
Das obige Beispiel könnte man dann folgendermaßen schreiben:

Java:
private void addDataToList(){
        
        Datensatz ds1 = new Datensatz();
        
       ds1.setIcon(R.drawable.user_image1);
       ds1.SetName("User 1");
       etc.
        
        Datensatz ds2 = new Datensatz();
        
       ds1.setIcon(R.drawable.user_image2);
       ds1.SetName("User 2");
       etc.
        
        
        myList.add(ds1);
        myList.add(ds2);
    }

Wenn du einen Array mit Werten hast, sähe es wie folgt aus:
Java:
private void addDataToList(Datensatz[] dsListe){
        
      for (Datensatz ds:dsListe) {
        
        myList.add(ds);
 
    }
}

Ich bin mir aber nicht sicher, was du überhaupt willst.
Warum willst du Datensätze, die du in ein Array füllen musst, in eine Liste packen?
Warum nicht gleich die Datensätze in die Liste schreiben?
 
Zuletzt bearbeitet:
Hallo langhaar!,

ja das ist so, ich bin gerade dabei Java bzw. Andriod Java zu lernen. Ich möchte Apps für mein Handy programmieren lernen.

Ich hab eine Projekt im Kopf und versuche es Stück für Stück es aufzubauen und dabei zu lernen.

Nun nach langen langen suchen habe ich ein kleine tolle Beispiel App gefunden das genau das macht (und nur das macht) was ich gerade versuche umzusetzen.

Nun versuche ich also den Code erst einmal so umzustricken, dass es meine Daten anzeigt. Das würde gehen wenn ich diese Programmstelle zu umschreibe das es meine Array ausliest.

Mich würde das aufbauen und animieren weiter zu machen! ;-)

Gruß OJMD
 
Hm...
Ich würde dir ja dazu raten, erst die Grundlagen zu lernen und dann zu programmieren und fremden Code abzuändern.

Aber wie du ein Array ausliest, weisst du ja jetzt 🙂
 
Ich habe schon mehrere Java und Android Beispiele aus meinen Büchern umgesetzt, nur nach "Hallo World" und Klassen möchte man aber irgend wann sich an seinem eigenen Beispiel versuchen, was ich ja jetzt vorhabe.

Nun ja ich habe nach ca. 3 Stunden kurz vorm resignieren es umsetzen können. Ich hatte vergessen gehabt das meine SD Karte noch im USB Modus war, und somit die App nicht auf die SQL DB zugreifern konnte. :-(

Aber es läuft jetzt!

Meine Frage nun ist die Syntax so ok oder kann man sie anders vereinfachen.

Java:
    private void addDataToList(){
  		Cursor cursor = null;
		SQLiteDatabase db = null;
		     
	     String path = "/sdcard/data/OJMDWoTDB/wotdb.db";
	     			
	try {	
		// Datenbank auf SD-Karte öffnen
	     	db = SQLiteDatabase.openOrCreateDatabase(path, null);
	     			
	    	 /*retrieve data from database */
	     	Cursor c = db.rawQuery("SELECT * FROM karten", null);

	     	int Column1 = c.getColumnIndex("_id");
	     	int Column2 = c.getColumnIndex("name");
	     	int Column3 = c.getColumnIndex("info");
	     	int Column4 = c.getColumnIndex("pic1");
	     		  
	     	// Check if our result was valid.
	     	c.moveToFirst();
	     	if (c != null) {
	     	    // Loop through all Results
	     	    do {
	     	    	int 	Id 		= c.getInt(Column1);
	     	    	String 	Name 	= c.getString(Column2);
	     	    	String 	Info 	= c.getString(Column3);
	     	    	String 	Pic1 	= c.getString(Column4);
	     	
			int resID = getResources().getIdentifier(Pic1 , "drawable", getPackageName());
	     		 
	     		HashMap<String, Object> map = new HashMap<String, Object>();
	     		map.put("id", Id);
	     		map.put("name", Name);
	     		map.put("info", Info);
	     		map.put("pic1", resID);
	     		    	
	     		myList.add(map);

	     		    }while(c.moveToNext());
	     		   }
	}catch(Exception e) {
		Log.e("Error", "Error", e);
	} finally {
		if (db != null) db.close();
	}
  }

Ich sage mal danke!

Oliver
 

Neue Themen


Zurück
Oben