Как добавить onclicklistener в динамически генерируемое текстовое представление? - PullRequest
8 голосов
/ 04 января 2012

В моем приложении генерируется динамическое представление текста. Я хочу добавить onclickListener к моему текстовому представлению. Как я могу это сделать, пожалуйста, дайте мне подсказку. Здесь жесткий код для 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 ]

13 голосов
/ 04 января 2012

вот код:

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

надеюсь, вам пригодится.

3 голосов
/ 01 октября 2015
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 для этого класса.

1 голос
/ 04 января 2012
        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);
    }
}

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

1 голос
/ 04 января 2012

сначала создайте прослушиватель 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 голосов
/ 12 мая 2017

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

Я добавил 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);
     }
0 голосов
/ 08 марта 2013
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 голосов
/ 04 января 2012

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

 TextView tv = new TextView(this);
 tv.setText("sample");
 tv.setOnClickListener(new OnClickListener(){
     @Override
     public void onClick(View v) {
        Log.i("", "Inside onclick");
     }
 });
0 голосов
/ 04 января 2012

Он не отличается от того, который вы делаете при создании текста в xml:

tv[i].setOnClickListener(new View.OnClickListener() {  
   @Override         
    public void onClick(View v) {     
    //your logic.     }      }); 
0 голосов
/ 04 января 2012

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

...