AsynkTask und JSON für einen Anfänger

  • 4 Antworten
  • Letztes Antwortdatum
S

Schany1

Neues Mitglied
0
Guten Morgen liebe Community,

ich bin blutiger Android-Anfänger und möchte gerne folgendes verwirklichen.

Zu meinem Projekt:

1. MainScreen soll ein Login sein.
Benutzerauswal über einen Spinner (Dieser soll über eine MySQL-
Datenbank aus einer Tabelle mit den vorhandenen Benutzer gefüllt
werden).

2. Update der MySQL - Tabelle "Benutzer" - Status des Logins. Also TRUE

3.
Auf dem nächsten Screen sollen dann viele bunte Daten wieder aus einer
MySQL-Datenbank Tabelle "Informationen" ausgelesen werden. Jede
Spalte der Tabelle in ein anderes TextView.

4. Bei Benutzeraktion (ButtonClick) soll in der Tabelle "Informationen"
wieder ein Update geschehen und in einer weiteren Tabelle soll eine neue
Zeile mit Daten erstellt werden.

Mein PHP-Script erzeugt den JSON String, soweit so gut. Ich weis aber leider nicht beim besten willen wie ich diese jetzt in Android erhalte. Und das ganze muss ja wegen dem Netzwerk in einem AsynkTask laufen.

Ich habe mir schon ein Paar Tutorials angesehen und versucht diese zu verstehen, leider erfolglos.

Wäre jemand bereit mir dabei zu helfen, es zu verstehen nicht machen!


Mein JSON-String welcher durch mein PHP Script für das Login erzeugt wird sieht so aus.

Code:
{"benutzer":[{"name":"Jasper","password":"123","loggedin":"0"},{"name":"Schwier","password":"123","loggedin":"0"},{"name":"ullrich","password":"123","loggedin":"0"},{"name":"Genat","password":"123","loggedin":"0"},{"name":"Klaus","password":"123","loggedin":"0"},{"name":"wschwengel","password":"123","loggedin":"0"}],"success":1}
Meine activity_main.xml
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/LinearLayout1"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    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=".MainActivity" >

    <ImageView
        android:id="@+id/imageView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:layout_marginTop="25dp"
        android:src="@drawable/logo" />

    <ScrollView
        android:id="@+id/scrollView1"
        android:layout_width="fill_parent"
        android:layout_height="657dp" >

        <LinearLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:orientation="vertical" >

            <Spinner
                android:id="@+id/spinner1"
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="25dp"
                android:entries="@array/monteure"/>

            <EditText
                android:id="@+id/editText1"
                android:layout_width="250dp"
                android:layout_height="wrap_content"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="25dp"
                android:ems="10"
                android:inputType="textPassword" >

                <requestFocus />
            </EditText>

            <Button
                android:id="@+id/button1"
                android:layout_width="250dp"
                android:layout_height="100dp"
                android:layout_gravity="center_horizontal"
                android:layout_marginTop="25dp"
                android:text="Anmelden" />

        </LinearLayout>
    </ScrollView>

</LinearLayout>
 
Hi,

was verstehst du nicht? Was hast du schon probiert? Wo hängt es genau?

Du musst eigentlich wie folgt vor gehen:
1. Klasse erstellen die von AsynTask erbt.
2. In der doInBackground() musst du "den quelletext der webseite" auslesen. In deinem Fall den JSON-String. Das ganze machst du mit HttpUrlConnection
3. Als letztes musst du den erhaltenen String mit JSON "codieren". Dazu gibt es JSONObject und JSONArray

Gruß
 
Guten Morgen,

1. wo genau hapert es denn?
2. Ist es nicht klug das Passwort mit PHP nach ausen zu geben ;) Nicht klug ist dabei eine nette Untertreibung :D

Grober Plan:
1. Webservice bauen, der Logindaten geschickt bekommt, diese auf die richtigkeit überprüft und einen Benutzer ggf einloggt (was auch immer einloggen an diese stelle bedeutet)
2. Android Eingabemaske bauen
3. Hintergrundlogik (Stickwort HTTPClient, HTTPConnection)

lg. Dagobert
 
Moin moin,

leider versteh ich selbst wenn ich mir Tutorials angucke bei dem Thema nur Bahnhof. Alles andere was ich bis jetzt so gemacht habe konnte ich anhand von Tutorials nach vollziehen.

Ich versuch es gerade noch mal.

Wäre über Tipps und Links wie ich anfangen muss sehr dankbar.

Gruß
Schany1

Der ursprüngliche Beitrag von 09:14 Uhr wurde um 10:32 Uhr ergänzt:

Also ....

ich habe es jetzt geschafft den AsyncTask zum laufen zu bringen mittels einem Tutorial.

Das JSON wird nun in eine Textview geschrieben.

Wie bekomme ich dieses jetzt in den Spinner ?

Code:
try {
				JSONArray Jarray = new JSONArray(result);
				for(int i=0;i<Jarray.length();i++)
				{
				JSONObject Jasonobject = null;
				text_1 = (TextView)findViewById(R.id.txt1);
				Jasonobject = Jarray.getJSONObject(i);
				Log.e("log_tag", "Get daten ");
				//get an output on the screen
				
				String name = Jasonobject.getString("name");
				String password = Jasonobject.getString("passwort");
			    text_1.append(name+"\t\t"+password+"\t\t"+"\n");
			    
		

				}

Vielen Dank schon mal.

VG Schany1
 

Ähnliche Themen

M
Antworten
9
Aufrufe
970
mkuz24
M
Zurück
Oben Unten