Bonjour,
J'ai une activité qui dérive de ListActivity. Je voudrais y faire figurer une icone dépendant d'une info stockée en base de données.
Pas de problèmes pour la partie BDD, mais là où je bloque c'est pour faire le lien entre mon info en base (valeurs: 1, 2 ou 3 pour faire simple) et l'image que je veux afficher.
J'ai créé un ViewBinder qui marche niquel pour le texte, mais impossible de récupérer mon ImageView (nullPointerException).
Voilà l'activité (en tout cas l'appel à un simpleCursorAdapter):
et le ViewBinder:
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 private void fillData(){ Cursor c = DBHelper.fetchAllRecipes(); startManagingCursor(c); String[] from = new String[]{RecipeDBAdapter.KEY_NAME}; int[] to = new int[]{R.id.text1}; SimpleCursorAdapter r = new SimpleCursorAdapter(this, R.layout.lig_recettes, c, from, to); r.setViewBinder(new RecipeBinder()); setListAdapter(r); }
Dans le doute, voilà lig_recettes:
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 public class RecipeBinder implements ViewBinder{ public boolean setViewValue(View view, Cursor cursor, int columnIndex){ //ERREUR ICI: NULLPOINTEREXCEPTION ImageView ty = (ImageView)view.findViewById(R.id.type1); TextView nom = (TextView)view.findViewById(R.id.text1); int typeIndex = cursor.getColumnIndex(RecipeDBAdapter.KEY_TYPE); int t = cursor.getInt(typeIndex); /*switch(t){ case 1://entrée type.setImageResource(R.drawable.salad); break; case 2://plat type.setImageResource(R.drawable.hamburger); break; /* case 3://dessert type.setImageResource(R.drawable.cupcake); break; default: type.setImageResource(R.drawable.salad); break; }*/ ty.setImageResource(R.drawable.hamburger); int nameIndex = cursor.getColumnIndex(RecipeDBAdapter.KEY_NAME); nom.setText(cursor.getString(nameIndex)); return true; } }
Je ne comprend pas pourquoi ça fonctionne avec le texte, mais pas avec l'image..
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 <?xml version="1.0" encoding="utf-8"?> <!-- Une recette en ligne --> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="wrap_content" android:layout_height="wrap_content" android:orientation="horizontal"> <TableLayout android:layout_width="wrap_content" android:layout_height="wrap_content" android:stretchColumns="1"> <TableRow> <ImageView android:id="@+id/type1" android:layout_width="35.0sp" android:layout_height="35.0sp" android:layout_weight="7"/> <TextView android:id="@+id/text1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="5" android:textSize="20.0sp"/> <!-- <CheckBox android:id="@+id/check1" android:layout_width="fill_parent" android:layout_height="fill_parent" android:layout_weight="1"/> --> </TableRow> </TableLayout> </LinearLayout>
Si vous pouviez m'éclairer
Merci d'avance
@+
Seeme
Partager