Anzeigen von Daten in textview durch json

Ich möchte zur Anzeige von Benutzer-Informationen aus der mysql-Datenbank über php und anzeigen in android textview. Das Szenario ist wie folgt: Wenn der angemeldete Benutzer in seinem Konto, er wird umgeleitet, um das dashboard enthält 4 Tasten, nämlich: newsfeed, profile, Kalender und about. Wenn der Benutzer auf die Schaltfläche "Profil" der Nutzer details wie seine lastname, firstname, middleinitial etc werden angezeigt, in die textview. Wenn ich meine app, spielt es keine Anzeige mehr, aber in meinem php-script gibt es den user-details. Was scheint das problem zu sein hier?

Hier ist mein java-code:

package sscr.stag;

import java.util.ArrayList;
import java.util.List;
import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.SharedPreferences;
import android.os.AsyncTask;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.util.Log;
import android.widget.TextView;

public class AdProfile extends Activity {
//All xml labels

TextView txtFname;
TextView txtMname;
TextView txtLname;

//Progress Dialog
private ProgressDialog pDialog;

//Creating JSON Parser object
JSONParser jsonParser = new JSONParser();

//Profile json object
JSONArray user;
JSONObject hay;
//Profile JSON url
private static final String PROFILE_URL     ="http://www.stagconnect.com/StagConnect/admin/TestProfile.php";

//ALL JSON node names
private static final String TAG_PROFILE = "user";
//private static final String TAG_ID = "id";
private static final String TAG_USERNAME = "username";
private static final String TAG_FIRSTNAME = "first_name";
private static final String TAG_MIDDLENAME = "middle_initial";
private static final String TAG_LASTNAME = "last_name";


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.adminprofile);


txtFname = (TextView) findViewById(R.id.fname);
txtMname = (TextView) findViewById(R.id.mname);
txtLname = (TextView) findViewById(R.id.lname);

//Loading Profile in Background Thread
new LoadProfile().execute();
}

class LoadProfile extends AsyncTask<String, String, String> {


public void test(){

 hay = new JSONObject();

        //Storing each json item in variable
        try {
            String firstname = hay.getString(TAG_FIRSTNAME);
            String middlename = hay.getString(TAG_MIDDLENAME);
            String lastname = hay.getString(TAG_LASTNAME);

            //displaying all data in textview

           txtFname.setText("Firstname: " + firstname);
            txtMname.setText("Middle Name: " + middlename);
            txtLname.setText("Last Name " + lastname);

        } catch (JSONException e) {
            //TODO Auto-generated catch block
            e.printStackTrace();
        }

 }

@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(AdProfile.this);
pDialog.setMessage("Loading profile ...");
pDialog.setIndeterminate(false);
pDialog.setCancelable(false);
pDialog.show();
}
   /**
    * getting Profile JSON
    * */
   protected String doInBackground(String... args) {
    //Building Parameters

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(AdProfile.this);
String post_username = sp.getString("username", "anon");
List<NameValuePair> params = new ArrayList<NameValuePair>();
params.add(new BasicNameValuePair("username", post_username));
//getting JSON string from URL
JSONObject json = jsonParser.makeHttpRequest(PROFILE_URL, "POST",
        params);

//Check your log cat for JSON reponse
Log.d("Profile JSON: ", json.toString());

try {
    //profile json object
    user = json.getJSONArray(TAG_PROFILE);
} catch (JSONException e) {
    e.printStackTrace();
}

return null;
}


protected void onPostExecute(String file_url) {
//dismiss the dialog after getting all products
pDialog.dismiss();
//updating UI from Background Thread
test();

}

}
}

Und hier ist mein php-Skript:

<?php


require('admin.config.inc.php');


if (!empty($_POST)) {

    //initial query
    $query = "Select last_name, first_name, middle_initial, designation FROM admin where username = :user";

    $query_params = array(':user' => $_POST['username']);

    //execute query
    try {
        $stmt = $db -> prepare($query);
        $result = $stmt -> execute($query_params);
    } catch (PDOException $ex) {
        $response["success"] = 0;
        $response["message"] = "Database Error!";
        die(json_encode($response));
    }

    //Finally, we can retrieve all of the found rows into an array using fetchAll 
    $rows = $stmt -> fetchAll();

    if ($rows) {
        $response["success"] = 1;
        $response["message"] = "Post Available!";
        $response["user"] = array();

        foreach($rows as $row) {
            $user = array();
            $user["designation"] = $row["designation"];
            $user["middlename"] = $row["middle_initial"];
            $user["firstname"] = $row["first_name"];
            $user["lastname"] = $row["last_name"];

            //update our repsonse JSON data
            array_push($response["user"], $user);
        }

        //echoing JSON response
        echo json_encode($response);

    } else {
        $response["success"] = 0;
        $response["message"] = "No user available!";
        die(json_encode($response));
    }

} else {}


       ?>

 <form action="TestProfile.php" method="POST">
 Username: <input type="text" name="username">
 <input type="submit" value="Submit">
 </form>

Hier die Ausgabe von meinem php-Skript(JSON-Antwort):

{"success":1,"message":"Post Available!","user":[{"designation":"Student Affairs Office in charge","middlename":"","firstname":"test","lastname":"test"}]}
hay = new JSONObject(); sollte hay = new JSONObject("jsonstrin");
Bekam ich diese Fehlermeldung: Unbehandelte Ausnahme geben JSONException
json und user Objekt werden vollkommen ignoriert. wo waren Sie soll etwas darstellen ?
Ich möchte die Anzeige im textview sir, im sorry, ich weiß nicht, was zu tun ist, im gerade neu in android
Bitte siehe meine Antwort Dein problem auf jeden Fall gelöst

InformationsquelleAutor IamAndroida | 2014-01-13

Schreibe einen Kommentar