Bonsoir tous le monde
Voilà j'ai créé un adapter personnalisé pour mon GridView qui va afficher une image d'un livre(image View) et son nom(texte View) ;
, j'ai déclaré la liste des noms des livres dans le fichier string.
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 <string-array name="bookLabels"> <item>android security</item> <item>penetration_testing</item> <item>red_team</item> <item>security</item> <item>the_art_of_exploitation</item> <item>web_application_hacker</item> <!-- <item>Black Hat Python</item>--> </string-array>
ce que je veux savoir c'est comment faire la même chose pour les images ie : les déclarer dans array-string:
Au lieu de creer un array dans le code java
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <string-array name="bookImages"> <item>@drawable/android_security</item> <item>@drawable/penetration_testing</item> <item>@drawable/red_team</item> <item>@drawable/security</item> <item>@drawable/the_art_of_exploitation</item> <item>@drawable/web_application_hacker </item> <item>@drawable/bhp </item> </string-array>
Voilà le code complet : j'ai deux fonctions
J'ai essayé de faire la même chose qu'avec les textes View mais ça marche pas.
BookGrid
et main
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87 package com.example.gridview.BookGrid; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.example.gridview.R; public class BookGrid extends BaseAdapter { private Context context; private LayoutInflater inflater; private String[] imageName; //Resources res = context.getResources(); // String[] bookImages =res.getStringArray(R.array.bookImages); //je veux le remplacer par :private String[] bookImages; //du res/strings private Integer[] bookImages = { R.drawable.android_security, R.drawable.penetration_testing, R.drawable.red_team, R.drawable.security, R.drawable.the_art_of_exploitation, R.drawable.web_application_hacker, R.drawable.bhp }; public BookGrid(Context context, String[] imageName) { this.context = context; this.imageName = imageName; this.inflater = LayoutInflater.from(context); } @Override public int getCount() { return bookImages.length; } @Override public Object getItem(int position) { return position; } @Override public long getItemId(int position) { return position; } @Override public View getView(int position, View convertView, ViewGroup parent) { if (convertView == null) { convertView = inflater.inflate(R.layout.layout_grid_image, parent, false); TextView txtv = convertView.findViewById(R.id.gridtextView); ImageView imgv = convertView.findViewById(R.id.gridImageView); //To Avoid ArrayIndexOutOfBoundsException boolean inBounds = (position >= 0) && (position <= imageName.length); if (!inBounds) { txtv.setText(imageName[position]); } else { String imgname = bookImages[position].toString(); String name = (String) context.getResources().getResourceEntryName(Integer.parseInt(imgname)); txtv.setText(name); } imgv.setImageResource(bookImages[position]); } else { } return convertView; } }
j'espère que j'étais un peu clair ;
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 package com.example.gridview.BookGrid; import android.content.res.Resources; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.view.View; import android.widget.AdapterView; import android.widget.GridView; import android.widget.TextView; import android.widget.Toast; import com.example.gridview.R; public class main extends AppCompatActivity { String[] labels; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Resources res = getResources(); labels = res.getStringArray(R.array.bookLabels); GridView gridView = findViewById(R.id.gridView1); BookGrid myAdapter = new BookGrid(getApplicationContext(), labels); gridView.setAdapter(myAdapter); gridView.setOnItemClickListener(new AdapterView.OnItemClickListener() { public void onItemClick(AdapterView<?> parent, View v, int position, long id) { Toast.makeText( getApplicationContext(), ((TextView) v.findViewById(R.id.gridtextView)) .getText(), Toast.LENGTH_SHORT).show(); } }); } }
Merci d'avance
Partager