2012-01-04 4 views
7

В моем приложении создается динамический текстовый вид. Я хочу добавить onclickListener в текстовое представление. Как я могу это сделать, пожалуйста, дайте мне подсказку. Здесь жесткий код для текстового просмотра.Как добавить onclicklistener в динамически сгенерированное текстовое представление?

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

    } 
+0

проверить ссылку http://stackoverflow.com/questions/10482099/how-can-we-create-dynamic-textview/39290597#39290597 –

+0

Проверить ссылку ниже http://stackoverflow.com/questions/ 10482099/how-can-we-create-dynamic-textview/39290597 # 39290597 –

ответ

0

Создать один объект View.onClickListener() "mListener". Добавить этот объект в tv.setOnClickListener (mListener) in for loop.

0

Это ничем не отличается от того, что вы делаете, когда вы создаете текст в XML:

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

это займет только последний созданный текст. – Narendra

+0

Извините! не наблюдал цикл for, обновлял мой код. – kosa

13

здесь код:

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 метод:

OnClickListener onclicklistener = new OnClickListener() { 

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

надеюсь, полезно тебе.

+0

TextView tv [] = новый TextView [subCategory.length]; эта вещь ошибка – Narendra

+0

sunCategory.length ---> длина текста. является динамическим, как вы хотите. Я думаю, проблема в длине. положите некоторое постоянное значение, скажем 5, и проверьте. –

+0

Thanx для такого полезного кода, это помогло мне ... +1 – Richa

1

сначала создать 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 
     } 
    }; 

, а затем, используя tv.setOnClickListener(listener) слушать.

0

Вам нужно вызвать setOnClickListener (..) в экземпляре TextView. В примере ниже мы используем анонимный внутренний класс

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

этот общий код для динамического добавления на клик у слушателя на любой вид или вид группы динамически

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 на этом класс.

0

Да, я также получаю ту же проблему, но друг, я получил решение, и это работает для меня

Я добавил TextView в время выполнения, а также получить их нажмите ниже код.

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); 
    } 
Смежные вопросы