Android pour les débutants: événements Tactiles android gridview
J'utilise le code suivant pour faire des choses avec gridview(légèrement modifié à partir de http://developer.android.com/resources/tutorials/views/hello-gridview.html). Je veux remplacer le onClicklistener et le onClick() la méthode avec leur "touch" équivalents à savoir touchlistener et onTouch() de sorte que lorsque je touche un élément dans le contrôle gridview l'image de l'élément de changements et une double touche sur le même élément prend de nouveau à l'origine de l'état.
Comment dois-je faire? Je ne peux pas obtenir mon code pour ce faire. Le clicklistener fonctionne dans une certaine mesure, mais le tactile n'est pas. S'il vous plaît aider.
public class ImageAdapter extends BaseAdapter {
private Context mContext;
public ImageAdapter(Context c) {
mContext = c;
}
public int getCount() {
return mThumbIds.length;
}
public Object getItem(int position) {
return null;
}
public long getItemId(int position) {
return 0;
}
//create a new ImageView for each item referenced by the Adapter
public View getView(int position, View convertView, ViewGroup parent) {
ImageView imageView;
if (convertView == null) { //if it's not recycled, initialize some attributes
imageView = new ImageView(mContext);
imageView.setLayoutParams(new GridView.LayoutParams(85, 85));
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setPadding(8, 8, 8, 8);
imageView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
if(position==0)
{
//do this
}
else
{
//do this
}
}
});
} else {
imageView = (ImageView) convertView;
}
imageView.setImageResource(mThumbIds[position]);
return imageView;
}
//references to our images
private Integer[] mThumbIds = {
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
}
Salut AJ, je veux faire la même chose sur clink de l'article que je veux obtenir sa position dans la grille et de la modification de son image comment puis-je le faire?u ne ont tout sloution maintenant? Ce Qui Concerne Faheem
OriginalL'auteur aj. | 2010-04-03
Vous devez vous connecter pour publier un commentaire.
Utiliser le
OnTouchListener
de cette façon. Lire sur MotionEvent types commeACTION_UP
,ACTION_MOVE
, etACTION_DOWN
ce qui signifie que la touche a été pressée ici, la souris a été déplacé, ou la clé était non pressée et non cuite ici...}
Depuis onItemClickListener ne pas attraper chaque touche unique de l'événement, c'est la seule solution pour gérer très rapide touche.
OriginalL'auteur PS376
Suite votre code, comme jaydeepfifadra suggéré, vous pouvez utiliser le setOnItemClickListener méthode de la gride vue plutôt que l'image elle-même. (Pour ne pas dire que ce n'est pas possible, mais je n'ai pas essayé).
Maintenant, je ne suis pas sûr à 100% si ce qui suit fonctionnera, mais dans le ci-dessus j'ai mis la vue.setSelected() de l'état de l'image à bascule. Je suis une sorte de deviner que vous pouvez définir l'image de la ressource à un drawable sélecteur. c'est à dire
faire de votre R. drawable.sample_2 ressources sélecteurs, tels que:
Toutefois, si cela vous permet de détecter le seul robinet qui ferait basculer l'état sélectionné. Elle ne couvre pas le double tap. Il ne semble pas y avoir de setOnDoubleClickItemListener() la méthode.
En tant que tel, il peut être nécessaire pour votre situation spécifique que vous mettez en œuvre une GestureDetector et de mettre en œuvre votre propre SimpleOnGestureListener classe (MyGestureListener s'étend SimpleOnGestureListener) qui gère le double et unique, appuyez sur les événements de votre recherche.
Vous pouvez voir un exemple de mise en œuvre de la geste de l'écouteur et le détecteur ici.
comment mettre en œuvre à la fois ontouch et aussi onfling dans un même listview?
Vous réglez le gestureListener comme le onTouchListener de votre grille de point de vue.
OriginalL'auteur Emile
Utiliser le
onItemSelectListener
de contrôle gridView.OriginalL'auteur jaydeepfifadra