8
votes

Comment ajouter Onclicklistener à la vue texte générée dynamiquement?

Dans mon application générant une vue textuelle dynamique. Je veux ajouter Onclicklistener à ma vue texte. Comment puis-je le faire s'il vous plaît donnez-moi un indice. Ici le code dur pour TextView.

        for (int i = 0; i < subCategory.length; i++) {
        TextView tv = new TextView(this);
        tv.setText(subCategory[i]);
        tv.setId(i);
        sCategoryLayout.addView(tv);

    }


9 Réponses :


0
votes

Créer une vue.onClickListener () objet "mlistener". Ajoutez cet objet à tv.setonclicklistener (mlistener) pour boucle.


0 commentaires

0
votes

Il n'est pas différent de celui que vous effectuez lorsque vous créez du texte dans XML:

tv[i].setOnClickListener(new View.OnClickListener() {  
   @Override         
    public void onClick(View v) {     
    //your logic.     }      }); 


1 commentaires

Il ne faudra que surtout View générée.



14
votes

Voici Code:

OnClickListener onclicklistener = new OnClickListener() {

    @Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
        if(v == tv[0]){
            //do whatever you want....
        }
    }
};


2 commentaires

TextView TV [] = Nouveau TextView [sous-catégorie.length]; cette chose montrant une erreur


suncategory.length ---> est la longueur de TextView. est dynamique que vous voulez. Je pense que le problème est de longueur. Mettez une valeur constante dire 5 et vérifiez.



1
votes

Créez d'abord un auditeur onclick: xxx

puis, en utilisant tv.setonclicklistener (écouteur) pour écouter.


0 commentaires

0
votes

Vous devez appeler SetonClickListener (..) sur l'instance TextView. Dans l'échantillon ci-dessous, nous utilisons une classe interne anonyme xxx


0 commentaires

1
votes
        for(int i = 0 ;i<mediaList.size();i++){
        view_media_gallery_item = LayoutInflater.from(view.getContext()).inflate(R.layout.e_media_gallery_item, null);
        TextView title = (TextView) view_media_gallery_item.findViewById(R.id.media_gallery_item_title);
        TextView subtitle = (TextView) view_media_gallery_item.findViewById(R.id.media_gallery_item_subtitle);
        ImageView flux_Title_Image =(ImageView) view_media_gallery_item.findViewById(R.id.media_gallery_item_img);

        title.setId(i+100);
        subtitle.setId(i+1000);
        flux_Title_Image.setId(2000+i);




        view_media_gallery_item.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                System.out.println("view media clicked");
                Media m = (Media )v.getTag();
                medialistner.setOnItemclick(m); 
            }
        });

        //          flux_Title_Image.setBackgroundDrawable(mediaList.get(i).getThumb());
        media_Gallery_List.addView(view_media_gallery_item);
    }
}
this generic code for dynamically adding on click listner on any view or view group dynamically

0 commentaires

0
votes
for (int i = 0; i <subCategory.length; i++) {
             tv[i] = new TextView(this);
                         tv[i].setText(subCategory[i]);
                         tv[i].setId(i);
                         sCategoryLayout.addView(tv[i]);
                         tv[i].setOnClickListener(this);
        }
@Override
public void onClick(View v) {
        // TODO Auto-generated method stub
        v.getId(); //here u can get the id on that basis u can perform any action
        //dont forget to implements OnClickListener in your activity
    }

0 commentaires

3
votes
for (int i = 0; i < subCategory.length; i++) {
        TextView tv = new TextView(this);
        tv.setText(subCategory[i]);
        tv.setId(i);
        tv.setOnClickListener(this);
        sCategoryLayout.addView(tv);

    }

@Override
    public void onClick(View v) {
        // TODO Auto-generated method stub
     switch(v.getId())
     {
     case 1:
     //Write Code For Click Here
     break;
     default:
     break;
    }
}
Impelement OnClickListner on this class.

0 commentaires

0
votes

Oui, j'ai aussi le même problème, mais j'ai eu la solution et cela a fonctionné pour moi

​​J'ai ajouté TextView en mode exécuté et aussi à les obtenir Cliquez ci-dessous. P>

for (int i = 0; i < albumItemList.size(); i++) {
       toplayout = getActivity().getLayoutInflater().inflate(R.layout.addphotoalbumlistinfater, null);
       newTV = (TextView)toplayout.findViewById(R.id.textView) ;
       textViewcount= (TextView)toplayout.findViewById(R.id.textViewcount) ;
       ll = (RelativeLayout) toplayout.findViewById(R.id.mainitemlist) ;
       ll.setTag("position"+i);
       newTV.setText(albumItemList.get(i).getAlbumName());
       textViewcount.setText(""+albumItemList.get(i).getCount());
       ll.setOnClickListener(new View.OnClickListener() {
        public void onClick(View v) {
          Toast.makeText(getActivity(),""+v.getTag(),Toast.LENGTH_SHORT).show();
           }
         });
       linearLayoutforaddchild.addView(toplayout);
     }


0 commentaires