如何将onclicklistener添加到动态生成的文本视图中?

时间:2012-01-04 05:53:52

标签: android onclick textview

在我的应用程序中生成动态文本视图。我想在我的文本视图中添加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 个答案:

答案 0 :(得分: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....
        }
    }
};
希望对你有用。

答案 1 :(得分: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。

答案 2 :(得分: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)收听。

答案 3 :(得分: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);
    }
}

此通用代码,用于动态地在任何视图或视图组上动态添加onclick侦听器

答案 4 :(得分:0)

创建一个View.onClickListener()对象“mListener”。 在for循环中将此对象添加到tv.setOnClickListener(mListener)。

答案 5 :(得分:0)

与您在xml:

中创建文本时所做的没有什么不同
tv[i].setOnClickListener(new View.OnClickListener() {  
   @Override         
    public void onClick(View v) {     
    //your logic.     }      }); 

答案 6 :(得分:0)

您需要在TextView实例上调用setOnClickListener(..)。 在下面的示例中,我们使用匿名内部类

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

答案 7 :(得分: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
    }

答案 8 :(得分: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);
     }