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
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
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; }
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
l'activité juste avant utilise bien une liste view et un adapter mais n'as aucun rapport avec ce code la.
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.
RechercheArticleDisplay.java
Merci d'avance !! je compte vraiment sur vous
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); } });
Cordialement
Partager