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