我只是按照本教程进行操作: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);}
?>
最佳答案
ListView
布局中没有ID为list
的ajouterproduit.xml
。
在AjouterProduit
活动中,您具有以下几行:
setContentView(R.layout.ajouterproduit);
list = (ListView) findViewById(R.id.list);
第一行将此活动的布局设置为
ajouterproduit.xml
,第二行尝试在此布局中查找ID为ListView
的list
(该ID不存在),因此将list
设置为null
。