2012-01-04 13 views
7

En mi aplicación se genera una vista dinámica de texto. Quiero agregar onclickListener a mi vista de texto. ¿Cómo puedo hacerlo? Por favor, dame alguna pista. Aquí código difícil para la vista de texto.Cómo agregar onclicklistener a la vista de texto generada dinámicamente?

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

    } 
+0

verificación de este enlace http://stackoverflow.com/questions/10482099/how-can-we-create-dynamic-textview/39290597#39290597 –

+0

comprueban debajo de acoplamiento http://stackoverflow.com/questions/ 10482099/how-can-we-create-dynamic-textview/39290597 # 39290597 –

Respuesta

0

Crea un objeto View.onClickListener() "mListener". Agregue este objeto a tv.setOnClickListener (mListener) en for loop.

0

No es diferente de la que se hace cuando se crea texto en xml:

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

solo tomará la última vista de texto generada. – Narendra

+0

¡Lo siento! no observé su bucle for, actualicé mi código. – kosa

13

aquí es el código:

TextView tv[] = new TextView[subCategory.length]; 
    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(onclicklistener); 
     } 

OnClickListener método:

OnClickListener onclicklistener = new OnClickListener() { 

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

esperan útil para ti.

+0

TextView tv [] = new TextView [subCategory.length]; esto que muestra el error – Narendra

+0

sunCategory.length ---> es la longitud de textview. es dinámico como quieras Creo que el problema en longitud. ponle un valor constante digamos 5 y revisa. –

+0

Gracias por este código útil, me ayudó ... +1 – Richa

1

En primer lugar crear un oyente onclick:

OnClickListener listener = new OnClickListener() { 

     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      final int id = v.getId(); 
      //use id to process different text view 
     } 
    }; 

y luego, utilizando tv.setOnClickListener(listener) para escuchar.

0

Debe llamar a setOnClickListener (..) en la instancia de TextView. En el ejemplo siguiente que utiliza la clase interna anónima

TextView tv = new TextView(this); 
tv.setText("sample"); 
tv.setOnClickListener(new OnClickListener(){ 
    @Override 
    public void onClick(View v) { 
     Log.i("", "Inside onclick"); 
    } 
}); 
1
 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); 
    } 
} 

este código genérico para añadir dinámicamente al hacer clic listner en cualquier vista o vista de grupo de forma dinámica

0
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 
    } 
3
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 en este clase.

0

Sí También he conseguir el mismo problema pero amigo me dio la solución y ha trabajado para mí

He añadido Textview en tiempo de ejecución y también conseguir que haga clic a continuación es código.

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