2013-11-06 2 views
1

Я пишу код для создания динамических кнопок, но я не знаю, как реализовать событие click для каждой кнопки динамически. Я нашел ответы на некоторые вопросы, но не работает с моим кодом ... Пожалуйста, помогите мне .. Это мой кодсобытие click для всех динамически сгенерированных кнопок android

public class dynamicbuttion extends Activity { 

    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 


     ScrollView sv = new ScrollView(this); 
     LinearLayout ll = new LinearLayout(this); 
     ll.setOrientation(LinearLayout.VERTICAL); 
     sv.addView(ll); 

     for(int i = 0; i < 5; i++) { 
      Button btn = new Button(this); 
     btn.setId(i); 
     btn.setText("dynamic buttion " + i); 
      ll.addView(btn); 

     } 

     this.setContentView(sv); 

    } 
} 

ответ

4
Button[] btn = new Button[5]; 
for(int i = 0; i < 5; i++) { 
    btn[i] = new Button(this); 
    btn[i].setId(i); 
    btn[i].setText("dynamic buttion " + i); 
    ll.addView(btn[i]); 
    btn[i].setOnClickListener(new View.OnClickListener() { 
    public void onClick(View v) { 
     //your desired functionality 
    } 
    }); 
} 
+0

Это сработало .... Большое вам спасибо. – user2962382

0

Используйте реализацию анонимного OnClickListener. Как это:

btn.setOnClickListener(new OnClickListener() 
{ 
    public void onClick(View v) 
    { 
     doThisWhenClicked(); 
    } 
}); 
0
public class DynamicButton extends Activity { 

    private LinearLayout ll; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.dynic_button); 

     ll = (LinearLayout) findViewById(R.id.llContent); 
     Button[] dynamic_button = new Button[10]; 
     for (int i = 0; i < 10; i++) { 
      dynamic_button[i] = new Button(this); 
      dynamic_button[i].setId(i); 
      dynamic_button[i].setTag("" + i); 
      dynamic_button[i].setText("My Dynamic Button No: " + i); 
      ll.addView(dynamic_button[i]); 
      dynamic_button[i].setOnClickListener(new View.OnClickListener() { 
       public void onClick(View v) { 
        Log.i("Clicked", "" + v.getTag()); 
       } 
      }); 
     } 

    } 
} 
3

я сделал с помощью пользовательского макета:

private LinearLayout linearLayoutParent; 

OnCreate:

linearLayoutParent = (LinearLayout)findViewById(R.id.linearLayoutParent); 

Теперь, когда нужно создавать динамические TextViews, просто мы добавим к Родителю Linear Layout:

TextView[] name = new TextView[10]; 
for (int i = 0; i < 10; i++) { 
    View view = getLayoutInflater().inflate(R.layout.child_view, linearLayoutParent, false); 
    name[i] = (TextView) view.findViewById(R.id.child_name); 
    name[i].setText("Dynamic Textxview " + i); 
    name[i].setId(i); 
    name[i].setTag(String.valueOf(i)); 
    ll.addView(view); 
    name[i].setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      Log.i("Clicked", ""+v.getTag()); 
     } 
    }); 
} 

child_view.xml:

<TextView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/child_name" 
    android:layout_width="120dp" 
    android:layout_height="50dp" 
    android:background="#969696" 
    android:gravity="center" 
    android:text="" 
    android:textColor="#fff" 
    android:textSize="16sp" /> 

Надеется, что это поможет.

Смежные вопросы