J'ai une liste de réception, avec des éléments avec cette mise en page: donc mes articles ont deux sections différentes. Je veux être capable de configurer différents Onclicklistener à l'intérieur de chaque article (un pour chaque linearlayout). J'ai essayé jusqu'à présent pour remplacer l'Onlistitemclick, mais cela ne semble pas fonctionner correctement: P> @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
ViewGroup vg = (ViewGroup)v;
vg.getChildAt(0).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mCtx, "element1", Toast.LENGTH_SHORT).show();
}
});
vg.getChildAt(1).setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(mCtx, "element2", Toast.LENGTH_SHORT).show();
}
});
}
3 Réponses :
Vous n'avez pas besoin d'un onclicklistener pour chaque élément de liste, mais vous devez trouver chaque liste de réception, par exemple. Dans votre activité OnCreate , votre OnlistitemClick devient - P> @Override
protected void onListItemClick(ListView l, View v, int position, long id) {
super.onListItemClick(l, v, position, id);
if (l.equals(listView1))
{
switch (position)
{
case 0:
Toast.makeText(mCtx, "list1-element1", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(mCtx, "list1-element2", Toast.LENGTH_SHORT).show();
break;
}
}
else
{
switch (position)
{
case 0:
Toast.makeText(mCtx, "list2-element1", Toast.LENGTH_SHORT).show();
break;
case 1:
Toast.makeText(mCtx, "list2-element2", Toast.LENGTH_SHORT).show();
break;
}
}
}
Vous devez utiliser défini onclicklistener code> à tous les éléments de listView.
J'ai créé une liste de liste. Définissez un adaptateur sur ListView. Mon adaptateur est représentable pour montrer chaque élément de la liste de liste. Donc, à l'intérieur
GeveView () Code> Je vais attribuer OnClickListener à tous les élatements à qui je veux obtenir l'événement de clic.
Exemple H2>
public View getView(int position, View convertView, ViewGroup parent) {
View vi=convertView;
ViewHolder holder;
if(convertView==null){
vi = inflater.inflate(R.layout.item, null);
holder=new ViewHolder();
holder.text=(TextView)vi.findViewById(R.id.text);;
holder.image=(ImageView)vi.findViewById(R.id.image);
vi.setTag(holder);
}
else
holder=(ViewHolder)vi.getTag();
holder.text.setText("item "+position);
holder.image.setTag(data.get(position));
holder.image.setOnClickListener(this);
holder.text.setOnClickListener(this);
imageLoader.DisplayImage(data.get(position), activity, holder.image);
return vi;
}
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
System.out.println("...clicked view is...."+arg0);
}
Je serais peut-être en train de manquer quelque chose ici, mais la version nette n'est-elle pas à utiliser avec la définition: puis implémenter: p>
Êtes-vous sûr que
vg.getchildat (0) code> et
vg.getchildat (1) code> retour
linearlayout code>
Ce n'est pas important, ce que je veux maintenant, c'est de définir différents événements à l'article ListView.