Bonjour,

Je travaille sur une application Android dont l'objectif est de récupérer des données issus d'une bdd MySQL en générant des réponses JSON, et aussi afficher ces données dans une listView.

L'opération de récupération des données est bien faite.

Le seul problème se focalise dans l'affichage.

Voilà ma classe qui contient tout :

Code java : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
public class afficherAbonnes extends Activity{
 
	 ListView listView;
	 private String URL = "http://10.0.2.2/FlashInfoWebServices/listeabonnes.php";
     ArrayList<HashMap<String, String>> mylist = new ArrayList<HashMap<String, String>>();
     List<Utilisateur> listeUsers = null;
 
     ArrayList<Utilisateur> arrayOfWebData = new ArrayList<Utilisateur>();
     FancyAdapter aa = null;
 
     static ArrayList<String> resultRow;
 
	 @Override
	 public void onCreate(Bundle savedInstanceState) {
       super.onCreate(savedInstanceState);
       setContentView(R.layout.afficherabonnesadmin);
 
       listView = (ListView) findViewById(R.id.listView1);
 
       getServerData(URL);
 
       aa = new FancyAdapter();
       listView.setAdapter(aa);
	}
 
 
 
 
	 class FancyAdapter extends ArrayAdapter<Utilisateur>
	 {
 
		public FancyAdapter() {
			super(afficherAbonnes.this, android.R.layout.simple_list_item_1, arrayOfWebData);
			// TODO Auto-generated constructor stub
		}
 
		public View getView(int position, View convertView, ViewGroup parent)
		{
			ViewHolder holder;
 
			if(convertView==null) {
				LayoutInflater inflater = getLayoutInflater();
				convertView = inflater.inflate(R.layout.list_abonnes, null);
				holder = new ViewHolder(convertView);
 
				convertView.setTag(holder);
			}
			else
			{
				holder = (ViewHolder) convertView.getTag();
			}
			holder.form((Utilisateur) arrayOfWebData.get(position));
 
			return (convertView);
 
		}
 
	 }
 
	 class ViewHolder {
 
		 public TextView login = null;
		 public TextView password = null;
		 public TextView nom = null;
 
		 public ViewHolder(View view) {
			 login = (TextView) findViewById(R.id.textLogin);
			 password = (TextView) findViewById(R.id.textPassword);
			 nom = (TextView) findViewById(R.id.textNom);
		 }
 
		 void form(Utilisateur i) {
			 login.setText(i.getLogin().toString());
			 password.setText(i.getPassword().toString());
			 nom.setText(i.getNom().toString());
		 }
	 }
 
 
	 public void getServerData(String URL) {
 
			InputStream is = null;
			String result = "";
			//JSONObject jArray = null;
			JSONArray jArray = null;
 
			try {
				HttpClient httpclient = new DefaultHttpClient();
				HttpPost httppost = new HttpPost(URL);
				HttpResponse response = httpclient.execute(httppost);
				HttpEntity entity = response.getEntity();
				is = entity.getContent();
 
			} catch(Exception e) {
				Log.e("log_tag", "Error in http connection " + e.toString());
			}
 
			// Convertion de la requête en string
			try {
				BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
				StringBuilder sb = new StringBuilder();
				String line = null;
				while ((line = reader.readLine()) != null) {
					sb.append(line + "\n");
				}
				is.close();
				result = sb.toString();
				Log.e("log_tag", "Resulta du fichier jsp" + result);
 
			}catch(Exception e){
				Log.e("log_tag", "Error converting result " + e.toString());
			}
			// Parse les données JSON
			try{
			    jArray = new JSONArray(result);
			    for(int i=0; i<jArray.length(); i++)
			    {
			    	JSONObject json_data = jArray.getJSONObject(i);
			    	Toast.makeText(this, json_data.getString("login"), Toast.LENGTH_SHORT).show();
			    	Utilisateur resultRow = new Utilisateur(json_data.getString("login")
			    			, json_data.getString("password")
			    			, json_data.getString("nom"));
			    	arrayOfWebData.add(resultRow);
			    }
 
			}catch(JSONException e){
				Log.e("log_tag", "Error parsing data " + e.toString());
			}
 
	}
 
 
}

Voilà les erreurs qui s'affichent quand j'accède à l'activité :

08-16 21:07:31.888: E/AndroidRuntime(788): java.lang.NullPointerException
08-16 21:07:31.888: E/AndroidRuntime(788): at adminActivity.afficherAbonnes$ViewHolder.form(afficherAbonnes.java:109)
08-16 21:07:31.888: E/AndroidRuntime(788): at adminActivity.afficherAbonnes$FancyAdapter.getView(afficherAbonnes.java:88)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.AbsListView.obtainView(AbsListView.java:1315)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.ListView.measureHeightOfChildren(ListView.java:1198)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.ListView.onMeasure(ListView.java:1109)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1012)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:381)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.measureVertical(LinearLayout.java:526)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.LinearLayout.onMeasure(LinearLayout.java:304)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:3132)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.widget.FrameLayout.onMeasure(FrameLayout.java:245)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.View.measure(View.java:8171)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewRoot.performTraversals(ViewRoot.java:801)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.view.ViewRoot.handleMessage(ViewRoot.java:1727)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.os.Handler.dispatchMessage(Handler.java:99)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.os.Looper.loop(Looper.java:123)
08-16 21:07:31.888: E/AndroidRuntime(788): at android.app.ActivityThread.main(ActivityThread.java:4627)
08-16 21:07:31.888: E/AndroidRuntime(788): at java.lang.reflect.Method.invokeNative(Native Method)
08-16 21:07:31.888: E/AndroidRuntime(788): at java.lang.reflect.Method.invoke(Method.java:521)
08-16 21:07:31.888: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
08-16 21:07:31.888: E/AndroidRuntime(788): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
08-16 21:07:31.888: E/AndroidRuntime(788): at dalvik.system.NativeStart.main(Native Method)
J ai besoin de votre aide,

Merci d'avance.