Integerausgabe über TextView

  • 11 Antworten
  • Letztes Antwortdatum
K

Kellrkind

Neues Mitglied
0
Hallo Zusammen,

bin neu hier und hoffe ihr könnt mir weiterhelfen :)
Hab mich totgegoogelt aber nix gefunden.

Folgendes:

Ich will in mehreren TextViews Daten ausgeben die ich in einer Liste aus der DB hole
mittels .setText() setze ich die Werte in die Textfelder ein.
Funktioniert bei Daten mit Buchstaben perfekt.

Jetzt folgendes Problem:
Sobald eine Zahl oder ein Sonderzeichen in dem setText erscheinen soll wird da nichts ausgegeben.

Sprich wenn ich mir den int Wert 88484 hole und mit setText ausgeben will, kommt da einfach eine leere Stelle wenn ich die App laufen lasse.

Ein kurzer Überblick:

Hier hole ich mir die Daten von der DB in eine Liste:
Code:
final List<Bude> uebersicht = appebene.holeBudeInfo(id);

Hier greife ich auf die Textviews zu:
Code:
TextView plz = (TextView) findViewById(R.id.plz);
TextView ort = (TextView) findViewById(R.id.ort);

Und hier setze ich den Text:
Code:
plz.setText(String.valueOf(uebersicht.get(0).getPLZ()));
ort.setText(uebersicht.get(0).getOrt());

Den Ort gibt es mir ohne Probleme aus, aber die PLZ erscheint nicht...
In der Log-Ansicht zeigt es mir in Eclipse aber alle Daten an.

An was kann das liegen?
Wenn mehr Code gewünscht wird, kann ich das gerne posten.

Ich hoffe ihr könnt mir weiterhelfen! :)

Grüße Kellrkind
 
Ich weiß, es ist jetzt nicht die Ideale Lösung.
Aber versuch doch mal folgendes als Test.
Leg dir eine neue String Variable "test" an,
kopiere in die den Inhalt aus der DB in die Test Variable und gebe die dann aus.

test= String.valueOf(uerbersicht.get(0).getPLZ());

plz.setText(test);
ort.setText(.....

Dann kannst du dir ja angucken was in die Test Variable kopiert wird.
 
Hab deinen Vorschlag gerade umgesetzt.

Im Debug-Modus steht nach der Zeile:
Code:
String test= String.valueOf(uebersicht.get(0).getPLZ());

rechts oben im Fenster der Wert "88484"

Aber wenn ich die App im Handy laufen lasse steht da nichts auf dem Display.
Im Anhang ist ein Bild vom Log in Eclipse.
Da steht die Zahl dann drin...

Wenn ich allerdings als Bsp: 12345 in der Strings.xml definiere und dann nicht setText mache sondern in der XML auf die Strings.xml verweise gibt er mir die Zahlen aus...

Allerdings soll das ja dynamisch nach den Ergebnissen der Liste sein.
 

Anhänge

  • Log.jpg
    Log.jpg
    17,1 KB · Aufrufe: 316
Irgendwie hast du ein ganz komisches Problem :)
Zeig mal die XML. Hast du vielleicht irgendwas final gesetzt, dass diese nicht mehr überschreiebn werden kann oder so?

Probier mal das ganze statisch zu machen.
also ort.setText("Hallo"); ob das funktioniert...

Ansonsten probier mal das ganze ding zu cleanen ...

Gruß
 
Hier die XML:

Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tool="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/background2"
    android:orientation="vertical" >

    <ImageView
        android:id="@+id/hauptbild"
        android:layout_width="250dp"
        android:layout_height="200dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentRight="true"
        android:layout_marginTop="55dp" />

    <TextView
        android:id="@+id/budename"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="10dp"
        android:gravity="center" />

    <TableLayout
        android:id="@+id/tableLayout1"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_alignParentBottom="true"
        android:layout_alignParentLeft="true"
        android:layout_below="@+id/hauptbild"
        android:stretchColumns="1" >

        <TableRow
            android:id="@+id/tableRow1"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="20dp"
            android:gravity="center_horizontal" >

            <TextView
                android:id="@+id/plz"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_marginLeft="5dip"
                android:text="@string/hello_world"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/ort"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/test"
                android:textSize="15sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow2"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal" >

            <TextView
                android:id="@+id/gegruendet2"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_marginLeft="5dip"
                android:text="@string/gegruendet"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/gegruendet"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/test"
                android:textSize="15sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow3"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal" >

            <TextView
                android:id="@+id/mitglieder2"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_marginLeft="5dip"
                android:text="@string/mitglieder"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/mitglieder"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/test"
                android:textSize="15sp" />
        </TableRow>

        <TableRow
            android:id="@+id/tableRow4"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginTop="10dp"
            android:gravity="center_horizontal" >

            <TextView
                android:id="@+id/budeabend2"
                android:layout_width="20dp"
                android:layout_height="wrap_content"
                android:layout_column="1"
                android:layout_marginLeft="5dip"
                android:text="@string/budeabend"
                android:textSize="15sp" />

            <TextView
                android:id="@+id/budeabend"
                android:layout_width="150dp"
                android:layout_height="wrap_content"
                android:layout_gravity="left"
                android:text="@string/test"
                android:textSize="15sp" />
        </TableRow>
    </TableLayout>

</RelativeLayout>

Die Teile wo ich Buchstaben reinsetzen will, Bsp: "Reinstetten" werden ohne Probleme reingeschrieben.

Nur sobald Zahlen reinsollen wird nichts angezeigt. Egal ob es aus der Liste kommt oder so:
Code:
plz.setText(Integer.toString(12345));
funktioniert auch nix :sad:

Wenn ich
Code:
ort.setText("Reinstetten");
mache funktioniert es...

gruß
 
Was gibt dir getPLZ() denn für einen Wert zurück?
PLZ werden normalerweise nicht als Zahl sondern als String gespeichert wegen der führenden 0 die davor stehen kann.
Wie sieht denn deine "Bude" Klasse aus?

Und wenn du uebersicht.get(0).getPLZ() in eclipse markierts dann rechtsklick drauf machst kannst du mit "inspect" dir quasi genau den teil ausgeben lassen.
Und mal prüfen ob da schon was falsch ist.
 
Des hier ist mittlerweile meine Klasse:

Code:
package de.martinkeller.bude_app;

import java.util.List;

import android.app.Activity;
import android.content.DialogInterface;
import android.content.res.Resources;
import android.graphics.Typeface;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.util.Log;
import android.view.KeyEvent;
import android.widget.ImageView;
import android.widget.TextView;
import de.martinkeller.bude.Bude;

public class Bude_Info extends Activity {

	private static final String TAG = "Bude_Info";

	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.bude_info);

		Bundle zielkorb = getIntent().getExtras();
		int id = zielkorb.getInt("datenpaket1");
		Log.d(TAG, String.valueOf(id));
		
		setzeDatenEin(id);
	}
	
	public void setzeDatenEin(int id){

		Appebene appebene = new Appebene();
		final List<Bude> uebersicht = appebene.holeBudeInfo(id);

		Typeface font1 = Typeface.createFromAsset(getAssets(),
				"fonts/Scurlock.TTF");
		TextView budename = (TextView) findViewById(R.id.budename);
		TextView plz = (TextView) findViewById(R.id.plz);
		TextView ort = (TextView) findViewById(R.id.ort);
		TextView gegruendet = (TextView) findViewById(R.id.gegruendet);
		TextView gegruendet2 = (TextView) findViewById(R.id.gegruendet2);
		TextView mitglieder = (TextView) findViewById(R.id.mitglieder);
		TextView mitglieder2 = (TextView) findViewById(R.id.mitglieder2);
		TextView budeabend = (TextView) findViewById(R.id.budeabend);
		TextView budeabend2 = (TextView) findViewById(R.id.budeabend2);
		

		budename.setTypeface(font1);
		budename.setTextSize(40.f);
		budename.setText(uebersicht.get(0).getName());
		
		plz.setTypeface(font1);
		plz.setTextSize(25.f);
		String test= String.valueOf(uebersicht.get(0).getPLZ());

		plz.setText(test);
		ort.setTypeface(font1);
		ort.setTextSize(25.f);
		ort.setText(uebersicht.get(0).getOrt());
		gegruendet2.setTypeface(font1);
		gegruendet2.setTextSize(25.f);
		gegruendet.setTypeface(font1);
		gegruendet.setTextSize(25.f);
		gegruendet.setText(String.valueOf(uebersicht.get(0).getGegruendet()));
		mitglieder2.setTypeface(font1);
		mitglieder2.setTextSize(25.f);
		mitglieder.setTypeface(font1);
		mitglieder.setTextSize(25.f);
		mitglieder.setText(String.valueOf(uebersicht.get(0).getMitglieder()));
		budeabend2.setTypeface(font1);
		budeabend2.setTextSize(25.f);
		budeabend.setTypeface(font1);
		budeabend.setTextSize(25.f);
		budeabend.setText("");

		String name = uebersicht.get(0).getName();
		String bildname = name.toLowerCase();

		bildname = bildname.replaceAll("\\s+", "_");
		bildname = bildname.replaceAll("ä", "ae");
		bildname = bildname.replaceAll("Ä", "ae");
		bildname = bildname.replaceAll("ö", "oe");
		bildname = bildname.replaceAll("Ö", "oe");
		bildname = bildname.replaceAll("ü", "ue");
		bildname = bildname.replaceAll("Ü", "ue");
		bildname = bildname.replaceAll("ß", "ss");

		String uri = "@drawable/" + bildname;

		int imageResource = getResources().getIdentifier(uri, null,
				getPackageName());

		if(imageResource > 0){
			ImageView imageview = (ImageView) findViewById(R.id.hauptbild);
			Drawable res = getResources().getDrawable(imageResource);
			imageview.setImageDrawable(res);
		}
		Log.d(TAG, "PLZ:" + uebersicht.get(0).getPLZ());
		Log.d(TAG, "ORT:" + uebersicht.get(0).getOrt());
		Log.d(TAG, "Mitglieder:" + uebersicht.get(0).getMitglieder());
		Log.d(TAG, "Gegruendet:" + uebersicht.get(0).getGegruendet());
		
		
	}

	@Override
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		if ((keyCode == KeyEvent.KEYCODE_BACK)) {
		}

		ImageView imageview = (ImageView) findViewById(R.id.hauptbild);
		imageview.setImageDrawable(null);
		finish();
		return true;
	}
}

Hier ist meine "Bude"-Klasse:

Code:
package de.martinkeller.bude;

public class Bude {
	
	private int id;
	private String name;
	private int plz;
	private String ort;
	private int gegruendet;
	private int mitglieder;
	private String y_koordinaten;
	private String x_koordinaten;
	private String budeabend;
	public CharSequence processName;

	// erster Konstrukter (muss noch angepasst sicher)
	public Bude(int id, String name, int plz, String ort, int mitglieder, int gegruendet, String y_koordinaten, String x_koordinaten, String budeabend) {

		this.id = id;
		this.name = name;
		this.plz = plz;
		this.ort = ort;
		this.gegruendet = gegruendet;
		this.mitglieder = mitglieder;
		this.y_koordinaten = y_koordinaten;
		this.x_koordinaten = x_koordinaten;
		this.budeabend = budeabend;
	}
	
	public Bude(int id, String name, int plz, String ort) {

		this.id = id;
		this.name = name;
		this.plz = plz;
		this.ort = ort;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public String getName() {
		return name;
	}

	public void setName(String name) {
		this.name = name;
	}

	public int getPLZ() {
		return plz;
	}

	public void setPLZ(int plz) {
		this.plz = plz;
	}

	public String getOrt() {
		return ort;
	}

	public void setOrt(String ort) {
		this.ort = ort;
	}

	public int getGegruendet() {
		return gegruendet;
	}

	public void setGegruendet(int gegruendet) {
		this.gegruendet = gegruendet;
	}

	public int getMitglieder() {
		return mitglieder;
	}

	public void setMitglieder(int mitglieder) {
		this.mitglieder = mitglieder;
	}

	public String getY_koordinaten() {
		return y_koordinaten;
	}

	public void setY_koordinaten(String y_koordinaten) {
		this.y_koordinaten = y_koordinaten;
	}

	public String getX_koordinaten() {
		return x_koordinaten;
	}

	public void setX_koordinaten(String x_koordinaten) {
		this.x_koordinaten = x_koordinaten;
	}

	public String getBudeabend() {
		return budeabend;
	}

	public void setBudeabend(String budeabend) {
		this.budeabend = budeabend;
	}
}

Der Trick mit dem Rechtsklick funktioniert bei mir nicht, ich finde da kein "inspect" :-(

Gruß
 
Achso, das mit dem "inspect" funktioniert nur wenn du im Debugger bist und die App läuft.
mach einen Breakpoint an die Stelle.

und nochmal der Hinweis PLZ nicht als int zu speichern sondern als String.
Sonst bekommst du Probleme mit Postleitzahlen die mit Null anfangen.
 
So, habe den Code der DB geändert auf TEXT statt INTEGER

Code:
db.execSQL("CREATE TABLE buden (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
					+ " name TEXT,"
					+ " plz TEXT,"
					+ " ort TEXT,"
					+ " mitglieder INTEGER,"
					+ " gegruendet INTEGER,"
					+ " y_koordinaten TEXT,"
					+ " x_koordinaten TEXT,"
					+ " budeabend TEXT)");

In der Bude-Klasse auch den Typ und alles geändert, holt jetzt ganz normal nen String statt nen integer.

Aber es gibt trotzdem nichts aus...

Sobald eine Zahl in dem String steht wird einfach nix angezeigt... :sad:
 

Anhänge

  • inspect.jpg
    inspect.jpg
    38,9 KB · Aufrufe: 275
Alle anderen Felder funktionieren?
Dann würde ich evtl mal ein neues TextFeld hinzufügen und das probieren.
Oder mal versuchen den Wert einem anderen Feld zu setzen.

So auf Anhieb fällt mir da auch gerade nix mehr ein.
 
Hast du mal versucht die Zeilen
Code:
plz.setTypeface(font1);
		plz.setTextSize(25.f);

zu entfernen? Eventuell hat deine Schrift einfach probleme mit Zahlen oder so.
 
JustinTime schrieb:
Hast du mal versucht die Zeilen
Code:
plz.setTypeface(font1);
		plz.setTextSize(25.f);

zu entfernen? Eventuell hat deine Schrift einfach probleme mit Zahlen oder so.

Hat funktioniert! :drool:
Danke! An die Schrift hätte ich nie gedacht...

So ein simpler mieser Fehler :unsure:
 
Zurück
Oben Unten