2012-01-04 20 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"を1つ作成します。 forループ内のtv.setOnClickListener(mListener)にこのオブジェクトを追加します。

0

それはあなたがXMLでテキストを作成するときに行うものとは異なるではありません:メソッドonclicklistener

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 = new OnClickListener() { 

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

が有用願ってここに

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

最後に生成されたテキストビューのみを使用します。 – Narendra

+0

申し訳ありませんあなたのforループを観察せず、私のコードを更新しました。 – kosa

13

コードですあなたへ。聞くためにtv.setOnClickListener(listener)を使用して、その後、

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

と:

+0

TextView tv [] =新しいTextView [subCategory.length]; この事を示すエラー – Narendra

+0

sunCategory.length --->はtextviewの長さです。あなたが望むように動的です。私は長さに問題があると思う。いくつかの一定の値を5と言ってチェックしてください。 –

+0

このような便利なコードのためのThanx、それは私を助けた... +1 – Richa

1

は、最初のonclickリスナーを作成します。

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"); 
    } 
}); 
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); 
    } 
関連する問題