Bonjour à tous, j'ai créé une listview qui fonctionne plutôt pas mal mais impossible d'adapter mon code pour une Gridview
Voici l'activite principale:
L'adapter:
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 public class sg_menu extends ListActivity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.sg_menu); Context ctx = getApplicationContext(); Resources res = ctx.getResources(); String[] options = res.getStringArray(R.array.noms); TypedArray icons = res.obtainTypedArray(R.array.icones); setListAdapter(new ImageAndTextAdapter(ctx, R.layout.list_icons, options, icons)); } @Override protected void onListItemClick(ListView l, View v, int position, long id) { Intent intent = null; switch (position) { case 0: intent = new Intent(this, sg_1.class); break; case 1: intent = new Intent(this, sg_2.class); break; case 2: intent = new Intent(this, sg_3.class); break; } if (intent != null) { startActivity(intent); } else { // report unknown item selection } } }
Mes layout possèdent une image et un texte, dont les données sont stockées dans un array de "values/string.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 public class ImageAndTextAdapter extends ArrayAdapter<String> { private LayoutInflater mInflater; private String[] mStrings; private TypedArray mIcons; private int mViewResourceId; public ImageAndTextAdapter(Context ctx, int viewResourceId, String[] strings, TypedArray icons) { super(ctx, viewResourceId, strings); mInflater = (LayoutInflater)ctx.getSystemService( Context.LAYOUT_INFLATER_SERVICE); mStrings = strings; mIcons = icons; mViewResourceId = viewResourceId; } @Override public View getView(int position, View convertView, ViewGroup parent) { convertView = mInflater.inflate(mViewResourceId, null); ImageView iv = (ImageView)convertView.findViewById(R.id.icon); iv.setImageDrawable(mIcons.getDrawable(position)); TextView tv = (TextView)convertView.findViewById(R.id.text); tv.setText(mStrings[position]); return convertView; } }
Donc ça fonctionne très bien pour une listview, mais rien à faire pour une GridView! J'ai essayé avec :
mais impossible d'adapter le code pour garder le fonctionnement du click suivant l'item cliqué.
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 public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.grid_layout); GridView gridView = (GridView) findViewById(R.id.grid_view); // Instance of ImageAdapter Class gridView.setAdapter(new ImageAdapter(this)); /** * On Click event for Single Gridview Item * */ gridView.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View v, int position, long id) { // Sending image id to FullScreenActivity Intent i = new Intent(getApplicationContext(), FullImageActivity.class); // passing array index i.putExtra("id", position); startActivity(i); } });
Je bloque vraiment, vous avez une idée s'il vous plait? Merci d'avance
Partager