Bonjour,

Je veux faire un tableau dynamique avec des données récupérées d'un script php via une base de données oracle. J'utilise pour cela Json.

Or quand je veux mettre les résultats de cette requete dans mon .java le log m'indique qu'il faut absolument une listView.

Je vous communique mes codes.

QtyArticle.java
Code : 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
 
private ArrayList<String> colonne1 = new ArrayList<String>();
private ArrayList<String> colonne2 = new ArrayList<String>();
private ArrayList<String> colonne3 = new ArrayList<String>();
 
try {
			JSONArray jArray = new JSONArray(result);
 
			for (int i = 0; i < jArray.length(); i++) {
 
				json_data = jArray.getJSONObject(i);
				qty = json_data.getString("QTY");
				store_no = json_data.getString("STORE_NO");
				sbs_no = json_data.getString("SBS_NO");
 
				colonne3.add(qty);
				colonne2.add(store_no);
				colonne1.add(sbs_no);
 
			}
 
			bool = true;
		} catch (JSONException e) {
			Log.i("tagjsonexp", "" + e.toString());
			bool = false;
		} catch (ParseException e) {
			Log.i("tagjsonpars", "" + e.toString());
			bool = false;
		}
 
		if (bool) {
 
 
			TableLayout tl = (TableLayout) findViewById(R.id.tdyn);
			TableRow tr;
 
			LayoutParams layoutParams = new LayoutParams(LayoutParams.FILL_PARENT,
					LayoutParams.FILL_PARENT);
			layoutParams.setMargins(2, 2, 2, 2);
 
			 for (int i = 0; i < colonne1.size(); i++) {
                 tr = new TableRow(this);
                 tr.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,
                                                 LayoutParams.WRAP_CONTENT));
                 tr.addView(generateTextView(colonne1.get(i), layoutParams));
                 tr.addView(generateTextView(colonne2.get(i), layoutParams));
                 tr.addView(generateTextView(colonne3.get(i), layoutParams));
                 tl.addView(tr, layoutParams);
			 }
 
		} else {
			Toast.makeText(QtyArticle.this, R.string.erreur2,
					Toast.LENGTH_SHORT).show();
			finish();
		}
 
	}
 
	public TextView generateTextView(String texte, LayoutParams ly) {
		TextView result = new TextView(this);
		result.setBackgroundColor(Color.LTGRAY);
		result.setTextColor(Color.DKGRAY);
		result.setGravity(Gravity.CENTER);
		result.setPadding(2, 2, 2, 2);
		result.setText(texte);
		result.setTextSize(20);
		result.setVisibility(View.VISIBLE);
		result.setLayoutParams(ly);
		return result;
	}
activity_qty_article.xml
Code : 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
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/scroll"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content" >
 
    <LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:orientation="vertical" >
 
        <TableLayout
            android:id="@+id/tdyn"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:background="#F87907" >
 
            <TableRow>
 
                <TextView
                    android:id="@+id/info"
                    android:layout_gravity="center_horizontal"
                    android:text="test11"
                    android:textColor="#000000" />
 
                <TextView
                    android:id="@+id/info"
                    android:layout_gravity="center_horizontal"
                    android:text="test12"
                    android:textColor="#000000" />
 
                <TextView
                    android:id="@+id/info"
                    android:layout_gravity="center_horizontal"
                    android:text="test13"
                    android:textColor="#000000" />
            </TableRow>
        </TableLayout>
    </LinearLayout>
 
</ScrollView>

Log
Code : 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
01-15 10:36:13.208: W/KeyCharacterMap(2092): No keyboard for id 0
01-15 10:36:13.208: W/KeyCharacterMap(2092): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
01-15 10:36:18.588: D/dalvikvm(2092): GC freed 3031 objects / 183568 bytes in 90ms
01-15 10:36:21.088: W/KeyCharacterMap(2092): No keyboard for id 0
01-15 10:36:21.088: W/KeyCharacterMap(2092): Using default keymap: /system/usr/keychars/qwerty.kcm.bin
01-15 10:36:24.148: I/global(2092): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
01-15 10:36:24.159: I/tagjsonexp(2092): org.json.JSONException: A JSONArray text must start with '[' at character 1 of ""
01-15 10:36:29.290: I/global(2092): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
01-15 10:36:29.468: D/dalvikvm(2092): GC freed 2260 objects / 313120 bytes in 170ms
01-15 10:36:32.428: D/AndroidRuntime(2092): Shutting down VM
01-15 10:36:32.428: W/dalvikvm(2092): threadid=3: thread exiting with uncaught exception (group=0x4001b188)
01-15 10:36:32.428: E/AndroidRuntime(2092): Uncaught handler: thread main exiting due to uncaught exception
01-15 10:36:32.478: E/AndroidRuntime(2092): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.softwaredatabase/com.example.softwaredatabase.QtyArticle}: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread.access$2200(ActivityThread.java:119)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.os.Handler.dispatchMessage(Handler.java:99)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.os.Looper.loop(Looper.java:123)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread.main(ActivityThread.java:4363)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at java.lang.reflect.Method.invokeNative(Native Method)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at java.lang.reflect.Method.invoke(Method.java:521)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at dalvik.system.NativeStart.main(Native Method)
01-15 10:36:32.478: E/AndroidRuntime(2092): Caused by: java.lang.RuntimeException: Your content must have a ListView whose id attribute is 'android.R.id.list'
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ListActivity.onContentChanged(ListActivity.java:236)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:201)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.Activity.setContentView(Activity.java:1622)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at com.example.softwaredatabase.QtyArticle.onCreate(QtyArticle.java:50)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
01-15 10:36:32.478: E/AndroidRuntime(2092): 	... 11 more
01-15 10:36:32.548: I/dalvikvm(2092): threadid=7: reacting to signal 3
01-15 10:36:32.711: I/dalvikvm(2092): Wrote stack trace to '/data/anr/traces.txt'
01-15 10:41:32.635: I/Process(2092): Sending signal. PID: 2092 SIG: 9
01-15 10:41:34.068: I/global(2099): Default buffer size used in BufferedReader constructor. It would be better to be explicit if an 8k-char buffer is required.
l'activité juste avant utilise bien une liste view et un adapter mais n'as aucun rapport avec ce code la.

RechercheArticleDisplay.java

Code : 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
	if (bool) {
 
			// Création et initialisation de l'Adapter pour les personnes
			ArticleAdapter adapter = new ArticleAdapter(this, donnees);
 
			// Récupération du composant ListView
			final ListView list = (ListView) findViewById(android.R.id.list);
 
			// Initialisation de la liste avec les données
			list.setAdapter(adapter);
 
			list.setOnItemClickListener(new OnItemClickListener() {
 
				@Override
				public void onItemClick(AdapterView<?> liste, View vue,
						int position, long id) {
 
					Article article = (Article) list.getItemAtPosition(position);
 
					Bundle objetbunble = new Bundle();
					objetbunble.putString("item_sid", article.getItemSid());
					objetbunble.putString("sbs_no", article.getSbsNo());
 
					// On envoi le message
					Intent defineIntent = new Intent(
							RechercheArticleDisplay.this, QtyArticle.class);
 
					// on passe notre objet a notre activities
					defineIntent.putExtras(objetbunble);
 
					// on appelle notre activité
					startActivityForResult(defineIntent, 0);
 
				}
 
			});
Merci d'avance !! je compte vraiment sur vous

Cordialement