如何将onclicklistener添加到dynamic生成的文本视图?

在我的应用程序生成dynamic文本视图。 我想添加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); } 

Solutions Collecting From Web of "如何将onclicklistener添加到dynamic生成的文本视图?"

这里是代码:

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

希望对你有用。

 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这个类。

首先创build一个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)来监听。

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

这个dynamic添加在任何视图或视图组上点击列表的通用代码

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

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

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

它和你在xml中创build文本时所做的没有什么不同:

 tv[i].setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //your logic. } }); 
 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 } 

是的,我也遇到了同样的问题,但朋友,我得到了解决scheme,它是为我工作

我在运行时添加了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); }