8 votes

Comment ajouter un onclicklistener à une vue texte générée dynamiquement ?

Dans mon application, je génère une vue de texte dynamique. Je veux ajouter onclickListener à ma vue de texte. Comment puis-je le faire, s'il vous plaît, donnez-moi un indice. Voici le code de la vue texte.

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

    }

0voto

Nambari Points 42066

Elle n'est pas différente de celle que vous faites lorsque vous créez du texte en xml :

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

0voto

Rajdeep Dua Points 7911

Vous devez appeler setOnClickListener(..) sur l'instance TextView. Dans l'exemple ci-dessous, nous utilisons une classe interne anonyme

 TextView tv = new TextView(this);
 tv.setText("sample");
 tv.setOnClickListener(new OnClickListener(){
     @Override
     public void onClick(View v) {
        Log.i("", "Inside onclick");
     }
 });

0voto

Rajesh Narwal Points 81
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
    }

0voto

Vinod Makode Points 347

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

J'ai ajouté Textview dans le temps d'exécution et je les obtiens également en cliquant sur le code ci-dessous.

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);
     }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X