Nouvelle activité sur OnItemClickListener Gridview
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:
Code:
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
}
}
} |
L'adapter:
Code:
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;
}
} |
Mes layout possèdent une image et un texte, dont les données sont stockées dans un array de "values/string.xml"
Donc ça fonctionne très bien pour une listview, mais rien à faire pour une GridView! J'ai essayé avec :
Code:
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);
}
}); |
mais impossible d'adapter le code pour garder le fonctionnement du click suivant l'item cliqué.
Je bloque vraiment, vous avez une idée s'il vous plait? Merci d'avance ;)