0

J'ai LinearLayouts agissant en tant que listView Je veux ajouter onClickListener sur les lignes du list. Le code est à l'intérieur d'un fragment.L'événement OnClickListener ne fonctionne pas en linéaire

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

    for (int i = 0; i < promos.size(); i++) { 
     View rowView = inflater.inflate(R.layout.list_item, lv, false); 
     holder = new NewsHolder(); 
     news = (News) promos.get(i); 
     holder.title = (TextView) rowView.findViewById(R.id.title); 
     holder.title.setText(news.title); 
     holder.excerpt.setText(news.excerpt); 
     lv.addView(rowView); 
     rowView.setOnClickListener(new View.OnClickListener() { 

      @Override 
      public void onClick(View v) { 
       Toast.makeText(getActivity(),"clicked item"+news.id,Toast.LENGTH_LONG).show(); 
      } 
     }); 

    } 
    mainL.addView(linear); 
    return mainL; 
} 
+5

Vous avez oublié d'appeler 'show()' sur 'Toast'. –

+0

Merci, mais cela ne fonctionne pas. –

+0

Veuillez coller le code d'erreur –

Répondre

0

Vous devez ajouter le rowView dans votre LinearLayout après avoir défini onclicklistner comme celui-ci,

public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

for (int i = 0; i < promos.size(); i++) { 
    View rowView = inflater.inflate(R.layout.list_item, lv, false); 
    holder = new NewsHolder(); 
    news = (News) promos.get(i); 
    holder.title = (TextView) rowView.findViewById(R.id.title); 
    holder.title.setText(news.title); 
    holder.excerpt.setText(news.excerpt); 

    rowView.setOnClickListener(new View.OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      Toast.makeText(getActivity(),"clicked item"+news.id,Toast.LENGTH_LONG).show(); 
     } 
    }); 
    lv.addView(rowView); 

} 
mainL.addView(linear); 
return mainL; 
} 
+0

Résolu J'ai oublié d'ajouter android: clickable = "true" à la liste_item.xml –

0

Ajouté android: cliquable = "true" à la list_item.xml.