我只是按照本教程进行操作:HERE从数据库检索产品,但是当我运行我的应用程序时,我得到了空白页,我试图解决该问题,但未得到任何结果。

注意:我已经创建了添加产品表单,并且可以正常工作,该产品已插入数据库,但是在应用本教程以显示我的产品的界面中,该产品始终保持空白。

这是我的代码:
AjouterProduit.java

import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.View;
import android.widget.EditText;
import android.widget.ListView;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;

public class AjouterProduit extends AppCompatActivity implements Download_data.download_complete {

    public ListView list;
    public ArrayList<Countries> countries = new ArrayList<Countries>();
    public ListAdapter adapter;

    EditText gamme,produit,desc;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.ajouterproduit);

        list = (ListView) findViewById(R.id.list);
        adapter = new ListAdapter(this);
        list.setAdapter(adapter);

       Download_data download_data = new Download_data((Download_data.download_complete) this);
       download_data.download_data_from_link("http://192.168.148.1/Ajout.php");
       // download_data.download_data_from_link("http://www.kaleidosblog.com/tutorial/tutorial.json");


        gamme =(EditText)findViewById(R.id.editText);
        produit=(EditText)findViewById(R.id.editText2);
        desc=(EditText)findViewById(R.id.editText3);
    }


    public void Ajout(View view){
        String ga,pro,des;
        ga=gamme.getText().toString();
        pro=produit.getText().toString();
        des=desc.getText().toString();


        String type = "ajout";

        work3 backgroundWorker = new work3(this);

        backgroundWorker.execute(type,ga, pro ,des);


    }

    @Override
    public void get_data(String data) {

    }

    public class Countries {

        private String DescriptionProduit;
        //public String NomProduit;
        private String NomProduit;


        {
            String data = null;
            JSONArray data_array= null;
            try {
                data_array = new JSONArray(data);
            } catch (JSONException e1) {
                e1.printStackTrace();
            }

            for (int i = 0 ; i < data_array.length() ; i++)
            {
                JSONObject obj= null;
                try {
                    obj = new JSONObject(data_array.get(i).toString());
                } catch (JSONException e1) {
                    e1.printStackTrace();
                }

                Countries add=new Countries(getNomProduit(), getDescriptionProduit());
                try {
                    add.setNomProduit(obj.getString("NomProduit"));
                } catch (JSONException e1) {
                    e1.printStackTrace();
                }
                try {
                    add.setDescriptionProduit(obj.getString("DescriptionProduit"));
                } catch (JSONException e1) {
                    e1.printStackTrace();
                }

                countries.add(add);

            }

            adapter.notifyDataSetChanged();

        }

        private Countries(String nomProduit, String descriptionProduit) {
            setNomProduit(nomProduit);
            setDescriptionProduit(descriptionProduit);
        }

        public String getNomProduit() {
            return NomProduit;
        }

        public void setNomProduit(String nomProduit) {
            NomProduit = nomProduit;
        }

        public String getDescriptionProduit() {
            return DescriptionProduit;
        }

        public void setDescriptionProduit(String descriptionProduit) {
            DescriptionProduit = descriptionProduit;
        }
    }
}


Download_data.java

import android.os.Bundle;
import android.os.Handler;
import android.os.Message;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.URL;

public class Download_data implements Runnable  {

    public download_complete caller;

    public interface download_complete
    {
        public void get_data(String data);
    }

    Download_data(download_complete caller) {
        this.caller = caller;
    }

    public String link;
    public void download_data_from_link(String link)
    {
        this.link = link;
        Thread t = new Thread(this);
        t.start();
    }

    public void run() {
        threadMsg(download(this.link));
    }

    private void threadMsg(String msg) {

        if (!msg.equals(null) && !msg.equals("")) {
            Message msgObj = handler.obtainMessage();
            Bundle b = new Bundle();
            b.putString("message", msg);
            msgObj.setData(b);
            handler.sendMessage(msgObj);
        }
    }


    private final Handler handler = new Handler() {

        public void handleMessage(Message msg) {

            String Response = msg.getData().getString("message");

            caller.get_data(Response);

        }
    };




    public static String download(String url) {
        URL website;
        StringBuilder response = null;
        try {
            website = new URL(url);

            HttpURLConnection connection = (HttpURLConnection) website.openConnection();
            connection.setRequestProperty("charset", "utf-8");

            BufferedReader in = new BufferedReader(
                    new InputStreamReader(
                            connection.getInputStream()));

            response = new StringBuilder();
            String inputLine;

            while ((inputLine = in.readLine()) != null)
                response.append(inputLine);

            in.close();

        } catch (Exception  e) {
            return "";
        }


        return response.toString();
    }


}


ListAdapter.java

import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import static android.content.Context.LAYOUT_INFLATER_SERVICE;

public class ListAdapter extends BaseAdapter {

    AjouterProduit main;

    ListAdapter(AjouterProduit main)
    {
        this.main = main;
    }

    @Override
    public int getCount() {
        return  main.countries.size();
    }

    @Override
    public Object getItem(int position) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    static class ViewHolderItem {
        TextView NomProduit;
        TextView DescriptionProduit;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        ViewHolderItem holder = new ViewHolderItem();
        if (convertView == null) {
            LayoutInflater inflater;
            inflater = (LayoutInflater) main.getSystemService(LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.cell, null);

            holder.NomProduit = (TextView) convertView.findViewById(R.id.NomProduit);
            holder.DescriptionProduit = (TextView) convertView.findViewById(R.id.DescriptionProduit);

            convertView.setTag(holder);
        }
        else
        {
            holder = (ViewHolderItem) convertView.getTag();
        }


        holder.NomProduit.setText(this.main.countries.get(position).getNomProduit());
        holder.DescriptionProduit.setText(this.main.countries.get(position).getDescriptionProduit());

        return convertView;
    }

}


cell.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    <!--nom-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/NomProduit" />
<!--description-->
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
         />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/DescriptionProduit" />
</RelativeLayout>


list.xml

<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" >
    <ListView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:id="@+id/list"
        />
</RelativeLayout>


ajouterproduit.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Nom gamme"
        android:id="@+id/textView9"
        android:textStyle="bold" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Nom produit"
        android:id="@+id/textView10" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText2" />
    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:textAppearance="?android:attr/textAppearanceMedium"
        android:text="Description produit"
        android:id="@+id/textViewD" />
    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editText3" />
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Ajouter produit"
        android:id="@+id/Ajout"
        android:layout_gravity="center_horizontal"
        android:onClick="Ajout"/>
</LinearLayout>


Ajout.php

<?php

$NomGamme=$_POST["NomGamme"];
$NomProduit=$_POST["NomProduit"];
$DescriptionProduit=$_POST["DescriptionProduit"];

//echo "Produit bien ajouter";
if($id=mysql_connect("localhost","root","") ) {

    if(mysql_select_db("applicationcolorado"))



$query= "INSERT INTO `applicationcolorado`.`produitgamme` (`NomGamme`, `NomProduit`, `DescriptionProduit`)
 VALUES ('$NomGamme', '$NomProduit', '$DescriptionProduit')";



    if (mysql_query($query))

    {echo "Produit bien ajouter";}

else {
    echo "false";

    }

mysql_close($id);}

        ?>


java - 在Android中从MySQL数据库检索数据-LMLPHP
java - 在Android中从MySQL数据库检索数据-LMLPHP

最佳答案

ListView布局中没有ID为listajouterproduit.xml
AjouterProduit活动中,您具有以下几行:

setContentView(R.layout.ajouterproduit);
list = (ListView) findViewById(R.id.list);


第一行将此活动的布局设置为ajouterproduit.xml,第二行尝试在此布局中查找ID为ListViewlist(该ID不存在),因此将list设置为null

09-15 23:12