# SPLIT funktion bei STRING funktioniert nicht!



## Schlucki6666 (4. Nov 2014)

Hallo Leute;

Vorab möchte ich mich bei allen Usern bedanken die uns "Unerfahrenen" unter die Arme greifen und gelegentlich sehr viel Geduld mit uns aufweisen. Nochmals DANKE dafür!!!

Ich habe wohl schon viele Fehler mit Hilfe dieses Forums beheben und finden können aber bei dem Folgenden finde ich seit Tagen keine Lösung, obwohl es für mich so banal ist, dass es beinahe schon lächerlich ist!

Also folgendes Problem stellt sich mir seit einigen Tagen:
Ich lese eine Textdatei mit dem Bufferedreader ein und übergebe diese Zeilenweise in ein Array. Soweit so gut. Anschließend lasse ich mir diesen in einer ListView anzeigen. Dies funktioniert alles tadellos. Nun möchte ich aber die ausgelesene(n) Zeile(n) meiner Textdatei mit dem STRING-Befehl SPLIT aufteilen.
Die Textdatei ist dazu in vier Datensätze, welche mit "," getrennt sind aufgeteilt.
Aber wenn ich dies versuche, erhalte ich auf dem Handy kurz die Anzeige "lenght=1; index=1". Lasse ich mir nur den "SPLIT[0]" in die ListView "übergeben" wird er richtig angezeigt. Füge ich aber 1,2,3 hinzu, kommt die vorhin erwähnte Meldung. Da spielt es auch keine Rolle ob ich nur 1 oder alle "splits" anfüge!? Ich hoffe ich konnte das Problem verständlich erklären?

Hier mal meine MyListActivity:

```
public class MyListActivity extends ListActivity { 
		public void onCreate(Bundle icicle) {
		    super.onCreate(icicle);
	try {
				
				File sdcard = Environment.getExternalStorageDirectory();
				File myFile = new File("/sdcard/dpLesen.txt");
				FileInputStream fIn = new FileInputStream(myFile);
				BufferedReader myReader = new BufferedReader(
						new InputStreamReader(fIn));
			
				String line ="";
				String[] Listeneintrag = new String[32];			
				for(int i = 0; (line = myReader.readLine())!=null; i++)
                                { 	 	Listeneintrag[i] = line;
					 	String[] splitResult = Listeneintrag[i].split(",", 2);
					 	Listeneintrag[i] = splitResult[0] + "\n" + splitResult[1]; // mit splitResult[1] funktioniert es schon nicht mehr!
				}
					
					    MySimpleArrayAdapter adapter = new MySimpleArrayAdapter(this, Listeneintrag);
					    setListAdapter(adapter);
				 myReader.close();
					Toast.makeText(getBaseContext(),
							"Datei gelesen",
							Toast.LENGTH_SHORT).show();
				} catch (Exception e) {
					Toast.makeText(getBaseContext(), e.getMessage(),
							Toast.LENGTH_SHORT).show();}
		    
		    
		   
		  }

		}
```

Hier der MySimpleArrayAdapter


```
public class MySimpleArrayAdapter extends ArrayAdapter<String> {
	  private final Context context;
	  private final String[] values;

	  public MySimpleArrayAdapter(Context context, String[] values) {
	    super(context, R.layout.rowlayout, values);
	    this.context = context;
	    this.values = values;
	  }

	  @Override
	  public View getView(int position, View convertView, ViewGroup parent) {
	    LayoutInflater inflater = (LayoutInflater) context
	        .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
	    View rowView = inflater.inflate(R.layout.rowlayout, parent, false);
	    TextView textView = (TextView) rowView.findViewById(R.id.label);
	    ImageView imageView = (ImageView) rowView.findViewById(R.id.icon);
	    textView.setText(values[position]);
	   	    
	    String s = values[position];
	    if (s.contains("TN") || s.contains("T+N") || s.contains("TPQ")) 
	      {imageView.setImageResource(R.drawable.tn);} 
	    else if (s.contains("N"))
	    {imageView.setImageResource(R.drawable.na);}
	    else if (s.contains("T"))
	    {imageView.setImageResource(R.drawable.ta);}
	    else if (s.contains("U")|| s.contains("X"))
	    {imageView.setImageResource(R.drawable.url);}
	    else
	    {imageView.setImageResource(R.drawable.leer);}	
	    return rowView;
	  }
	}
```

und zum Schluss noch mein Layout dazu


```
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
  
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:paddingBottom="@dimen/activity_vertical_margin"
    android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    tools:context="de.android.listactivity.MyListActivity" >

    <ImageView
        android:id="@+id/icon"
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher" />

    <TextView
        android:id="@+id/label"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignTop="@+id/icon"
        android:layout_marginLeft="27dp"
        android:layout_toRightOf="@+id/icon"
        android:text="@string/hello_world"
        android:textSize="16sp" />

</RelativeLayout>
```

Ich hoffe ihr könnte mir helfen, denn die Vorschläge die ich im I-Net gefunden habe, funktionierten leider alle nicht!

Dank und lg
Schlucki


----------



## Joose (5. Nov 2014)

Schlucki6666 hat gesagt.:


> ```
> for(int i = 0; (line = myReader.readLine())!=null; i++)
> { 	 	Listeneintrag[i] = line;
> String[] splitResult = Listeneintrag[i].split(",", 2);
> ...



Was mir schon mal auffällt ist das du den Split auf maximal 2 Elemente beschränkst aber meinst es könnten bis zu 4 sein.
Ansonsten kann es auch vorkommen das es eine Zeile ohne "," gibt? Schon mal testweise jede gelesene Zeile ausgeben lassen?


----------



## Schlucki6666 (5. Nov 2014)

@Joose;
Danke für deine Antwort.
Das ich den Split auf max. 2 Elemente beschränkte war nur aus meinem "herumprobieren" übrig geblieben. ABER du hast mir den Fehler gesagt!!! Es gab eine Zeile ohne "," und dort blieb die App hängen!!!
Danke!
Manoman, 5 Tage gesucht wie ein Irrer und dann wegen so einer Kleinigkeit ........
Könnte mich in den A..... beißen ;(


----------



## Joose (5. Nov 2014)

Schlucki6666 hat gesagt.:


> Manoman, 5 Tage gesucht wie ein Irrer und dann wegen so einer Kleinigkeit ........
> Könnte mich in den A..... beißen ;(



Du hast nirgends geschrieben welche "Fehlermeldung" du bekommen hast, aber anhand deiner Beschreibungen wird es wahrscheinlich eine ArrayIndexOutofBoundsException gewesen sein.
Diese kommt immer wenn man auf einen Index der nicht vorhanden ist zugreifen. -> daher bei so einer Exception immer prüfen ob es auch genügend Indexes gibt auf die man zugreifen kann!
So sucht man nicht 5 Tage lang


----------



## Schlucki6666 (5. Nov 2014)

@joose;
Hast natürlich zu 100% recht! Ist/War eben ein absoluter Anfängerfehler  welcher aber den Vorteil hatte, dass ich sehr viel im I-Net und hier im Forum gelesen habe und so manch offene Frage/Problem auch so nebenbei gelöst wurde 
Danke aber nochmals für deine Hilfe!
Hoffe ich kann wieder auf dich zurückgreifen 

Schlucki


----------

