Java 从数据库填充listview(localhost phpmyadmin)

Java 从数据库填充listview(localhost phpmyadmin),java,android,json,Java,Android,Json,我试图寻找类似的问题,但我找不到任何适合我所做的。。我试图从数据库中填充listview,无论何时运行它,它都不会在listview中显示任何内容 这是航海日志 JSONException: Value {"message":"Patient Available","success":1,"post":[{"lname":"miradora doringo","address":"navotas, pilipinas","email":"tam.muqu23","age":"20","gende

我试图寻找类似的问题,但我找不到任何适合我所做的。。我试图从数据库中填充listview,无论何时运行它,它都不会在listview中显示任何内容

这是航海日志

JSONException: Value {"message":"Patient Available","success":1,"post":[{"lname":"miradora doringo","address":"navotas, pilipinas","email":"tam.muqu23","age":"20","gender":"babae","remarks":"mabuting estudyante","patient_id":"6","contact":"361008762","fname":"jenelien"},{"lname":"andres","address":"manila","email":"julieannandres@gmail.com","age":"20","gender":"female","remarks":"trial","patient_id":"7","contact":"926644895","fname":"julie"}]} of type org.json.JSONObject cannot be converted to JSONArray
这是我的Viewpatient.java:

public class Viewpatient extends ListActivity {

    private Button create;

    private ProgressDialog pDialog;

    private static final String READ_PATIENT_URL = "http://192.168.43.15:8080/DoctorScheduler/activities/viewpatient.php";

    private static final String TAG_SUCCESS = "success";
    private static final String TAG_MESSAGE = "message";
    private static final String TAG_POST    = "post";
    private static final String TAG_PATIENT = "patient_id";
    private static final String TAG_FNAME   = "fname";
    private static final String TAG_LNAME   = "lname";
    private static final String TAG_AGE     = "age";
    private static final String TAG_GENDER  = "gender";
    private static final String TAG_CONTACT = "contact";
    private static final String TAG_EMAIL   = "email";
    private static final String TAG_ADDRESS = "address";    
    private static final String TAG_REMARKS = "remarks";

    JSONParser jsonParser = new JSONParser();

    //array of all patient information by patient
    JSONArray Apatient = null;
    //manages all patient in a list
    ArrayList<HashMap<String, String>> ApatientList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_viewpatient);

        ApatientList = new ArrayList<HashMap<String, String>>();
        new LoadInformation().execute();

        ListView lv = getListView();
        lv.setOnItemClickListener(new OnItemClickListener(){

            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position,
                    long id) {
                // TODO Auto-generated method stub
                // INSERT ALL PREVIOUS CONSULTATIONS OF THE PATIENT HERE
            }
        });

        create = (Button) findViewById(R.id.BtnAdd);
        create.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                Intent createInfo = new Intent(Viewpatient.this, Viewupdate.class);
                startActivity(createInfo);
            }
        });

    };

    public class LoadInformation extends AsyncTask<Void, Void, Void> {

        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            super.onPreExecute();

            pDialog = new ProgressDialog(Viewpatient.this);
            pDialog.setMessage("Loading all patient information....");
            pDialog.setIndeterminate(false);
            pDialog.setCancelable(true);

        }

        @Override
        protected Void doInBackground(Void... args) {
            // TODO Auto-generated method stub
            List<NameValuePair> params = new ArrayList<NameValuePair>();

            // Making a request to url and getting response
            String json = jsonParser.getJSONFromURL(READ_PATIENT_URL, "POST", params);

            Log.d("Response: ", "> " + json);

            try {
                    Apatient = new JSONArray(json);
                    if (Apatient != null) {

                    // looping
                    for (int i = 0; i < Apatient.length(); i++) {
                        JSONObject c = Apatient.getJSONObject(i);

                        String patient_id = c.getString(TAG_PATIENT);
                        String fname = c.getString(TAG_FNAME);
                        String lname = c.getString(TAG_LNAME);
                        String age = c.getString(TAG_AGE);
                        String gender = c.getString(TAG_GENDER);
                        String contact = c.getString(TAG_CONTACT);
                        String email = c.getString(TAG_EMAIL);
                        String address = c.getString(TAG_ADDRESS);
                        String remarks = c.getString(TAG_REMARKS);

                        // tmp hashmap for single contact
                        HashMap<String, String> map = new HashMap<String, String>();

                        // adding each child node to HashMap key => value
                        map.put(TAG_PATIENT, patient_id);
                        map.put(TAG_FNAME, fname);
                        map.put(TAG_LNAME, lname);
                        map.put(TAG_AGE, age);
                        map.put(TAG_GENDER, gender);
                        map.put(TAG_CONTACT, contact);
                        map.put(TAG_EMAIL, email);
                        map.put(TAG_ADDRESS, address);
                        map.put(TAG_REMARKS, remarks);

                        // adding contact to contact list
                        ApatientList.add(map);
                    }
                    } else {
                        Log.e("Error", "Couldn't get any data from the url");
                    }

                } catch (JSONException e) {
                    e.printStackTrace();
                }

            return null;
        }

        @Override
        protected void onPostExecute(Void result) {
            // TODO Auto-generated method stub
            //super.onPostExecute(result);
            pDialog.dismiss();

            runOnUiThread(new Runnable(){
            public void run(){
            ListAdapter adapter = new SimpleAdapter(
                    Viewpatient.this, ApatientList, R.layout.main,
                    new String[] { TAG_PATIENT, TAG_FNAME, TAG_LNAME, TAG_AGE,
                                   TAG_GENDER, TAG_CONTACT, TAG_EMAIL, TAG_ADDRESS, TAG_REMARKS },
                    new int[] { R.id.txtID, R.id.txtFName, R.id.txtLName, R.id.txtAge, R.id.txtGender,
                                R.id.txtContact, R.id.txtEmail, R.id.txtAddress, R.id.txtRemarks});

            setListAdapter(adapter);
            }
            });
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.viewpatient, menu);
        return true;
    }

}
public类Viewpatient扩展ListActivity{
私有按钮创建;
私人对话;
私有静态最终字符串读取\u患者\u URL=”http://192.168.43.15:8080/DoctorScheduler/activities/viewpatient.php";
私有静态最终字符串标记_SUCCESS=“SUCCESS”;
私有静态最终字符串标记_MESSAGE=“MESSAGE”;
私有静态最终字符串标记_POST=“POST”;
私有静态最终字符串标记\u PATIENT=“PATIENT\u id”;
私有静态最终字符串标记_FNAME=“FNAME”;
私有静态最终字符串标记_LNAME=“LNAME”;
私有静态最终字符串标记_AGE=“AGE”;
私有静态最终字符串标记_GENDER=“GENDER”;
专用静态最终字符串标记\u CONTACT=“CONTACT”;
私有静态最终字符串标记\u EMAIL=“EMAIL”;
私有静态最终字符串标记_ADDRESS=“ADDRESS”;
私有静态最终字符串标记\u备注=“备注”;
JSONParser JSONParser=新的JSONParser();
//按患者列出的所有患者信息的数组
JSONArray Apatient=null;
//管理列表中的所有患者
数组列表;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_viewpatient);
ApartientList=新的ArrayList();
新建LoadInformation().execute();
ListView lv=getListView();
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父视图、视图、整型位置、,
长id){
//TODO自动生成的方法存根
//在此插入患者之前的所有咨询
}
});
create=(按钮)findviewbyd(R.id.BtnAdd);
create.setOnClickListener(新视图.OnClickListener(){
@凌驾
公共void onClick(视图v){
//TODO自动生成的方法存根
Intent createInfo=新的Intent(Viewpatient.this、Viewupdate.class);
startActivity(createInfo);
}
});
};
公共类LoadInformation扩展了异步任务{
@凌驾
受保护的void onPreExecute(){
//TODO自动生成的方法存根
super.onPreExecute();
pDialog=新建进度对话框(Viewpatient.this);
pDialog.setMessage(“加载所有患者信息…”);
pDialog.setUndeterminate(假);
pDialog.setCancelable(真);
}
@凌驾
受保护的Void doInBackground(Void…args){
//TODO自动生成的方法存根
List params=new ArrayList();
//向url发出请求并获得响应
字符串json=jsonParser.getJSONFromURL(读取患者URL,“POST”,参数);
Log.d(“响应:”,“>”+json);
试一试{
Apatient=新的JSONArray(json);
if(apaClient!=null){
//循环
对于(int i=0;ivalue
地图放置(标记患者,患者id);
地图放置(TAG_FNAME,FNAME);
地图放置(标签名称,标签名称);
地图放置(标记年龄、年龄);
地图放置(标记性别,性别);
地图放置(标记触点,触点);
地图放置(标签、电子邮件、电子邮件);
地图放置(标签地址,地址);
地图放置(标签备注、备注);
//将联系人添加到联系人列表
添加(地图);
}
}否则{
Log.e(“错误”,“无法从url获取任何数据”);
}
}捕获(JSONException e){
e、 printStackTrace();
}
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
//TODO自动生成的方法存根
//super.onPostExecute(结果);
pDialog.disclose();
runOnUiThread(新的Runnable(){
公开募捐{
ListAdapter=新的SimpleAdapter(
Viewpatient.this、ApartientList、R.layout.main、,
新字符串[]{TAG_PATIENT,TAG_FNAME,TAG_LNAME,TAG_AGE,
TAG_性别、TAG_联系人、TAG_电子邮件、TAG_地址、TAG_备注},
新int[]{R.id.txtID,R.id.txtFName,R.id.txtLName,R.id.txtAge,R.id.txtGender,
R.id.txtContact、R.id.txtmail、R.id.txtAddress、R.id.txtmarks});
setListAdapter(适配器);
}
})
public class JSONParser {

    //new
    static String response = null;

    static InputStream is = null;
    static JSONObject jObj = null;
    static String json = "";

    //constructor

    public JSONParser(){

    }

    public String getJSONFromURL(String url, String method,
            List<NameValuePair> params){

        try {
            // http client
            DefaultHttpClient httpClient = new DefaultHttpClient();
            HttpEntity httpEntity = null;
            HttpResponse httpResponse = null;

            // Checking http request method type
            if (method == "POST") {
                HttpPost httpPost = new HttpPost(url);
                // adding post params
                if (params != null) {
                    httpPost.setEntity(new UrlEncodedFormEntity(params));
                }

                httpResponse = httpClient.execute(httpPost);

            } else if (method == "GET") {
                // appending params to url
                if (params != null) {
                    String paramString = URLEncodedUtils
                            .format(params, "utf-8");
                    url += "?" + paramString;
                }
                HttpGet httpGet = new HttpGet(url);

                httpResponse = httpClient.execute(httpGet);

            }
            httpEntity = httpResponse.getEntity();
            response = EntityUtils.toString(httpEntity);

        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return response;

    }
}
    <?php

require ("../config.inc.php");

    $query = "Select * From patientinfo";

    try{
        $stmt = $dbname->prepare($query);
        $result = $stmt->execute(); 

    }catch(PDOException $ex){
            $response["success"] = 0;
            $response["message"] = "Database Error!";

            die(json_encode($response));
        }

    //retrieve all the rows
    $rows = $stmt->fetchAll();

    if($rows){
        $response["success"] = 1;
        $response["message"] = "Patient Available";
        $response["post"] = array();

        foreach($rows as $row){
            $post               = array();
            $post["patient_id"] = $row["patient_id"];
            $post["fname"]      = $row["fname"];
            $post["lname"]      = $row["lname"];
            $post["age"]        = $row["age"];
            $post["gender"]     = $row["gender"];
            $post["contact"]    = $row["contact"];
            $post["email"]      = $row["email"];
            $post["address"]    = $row["address"];
            $post["remarks"]    = $row["remarks"];

            //update json response
            array_push($response["post"], $post);
            }

        echo json_encode($response);
    }
    else{
        $response["success"] = 0;
        $response["message"] = "No available patient information";

        die(json_encode($response));

    }
?>