2015-10-18 2 views
0

У меня есть кнопка. Я хочу написать функцию «onClick» для кнопки. Каждый раз, когда я нажимаю на него, я хочу, чтобы на экране была создана новая кнопка. А также, что новая кнопка будет добавлена ​​в список элементов списка.Как создать кнопку динамического массива в Android?

Я искал, но не нашел ответа. Все ответы говорят о создании кнопок с перетаскиванием и перетаскиванием, а не с их динамическим созданием.

Благодаря

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin" 
    android:paddingRight="@dimen/activity_horizontal_margin" 
    android:paddingTop="@dimen/activity_vertical_margin" 
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:text="Click to add" 
     android:id="@+id/B1" 
     android:layout_alignParentTop="true" 
     android:layout_centerHorizontal="true" 
     android:onClick="clicktoaddcode" 
     /> 
</RelativeLayout> 

package com.example.yas.dynamicbutton; 

import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.Toast; 

public class MainActivity extends AppCompatActivity { 

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

    public void clicktoaddcode(View V){ 
     Toast.makeText(MainActivity.this, "Created", Toast.LENGTH_SHORT).show(); 
    } 
} 
+0

вы собираетесь должны сделать свой вопрос намного более ясно и предоставить код, который вы до сих пор плюс то, что/не происходит, чтобы получить хороший ответ. – codeMagic

ответ

2

Вы должны с помощью ArrayList.

List<Button> btnList = new ArrayList<>(); 

// Call Your ClickListener 
btnList.add(new Button(YourContext)); 
YourParent.addView(btnList.get(btnList.size() - 1)); 

Отредактировано

MainActivity.java

public class MainActivity extends AppCompatActivity { 

    LinearLayout container; 

    List<Button> btnList = new ArrayList<>(); 

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

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


    } 

    public void addBtn(View v){ 
     btnList.add(new Button(this)); 
     container.addView(btnList.get(btnList.size() - 1)); 
    } 
} 

activity_main.xml

<?xml version="1.0" encoding="utf-8"?> 
<android.support.design.widget.CoordinatorLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:app="http://schemas.android.com/apk/res-auto" 
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" 
    android:layout_height="match_parent" android:fitsSystemWindows="true" 
    tools:context=".MainActivity"> 

    <LinearLayout 
     android:id="@+id/container" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:clickable="true" 
     android:onClick="addBtn"> 

    </LinearLayout> 

</android.support.design.widget.CoordinatorLayout> 
+0

в «YourContext» и «YourParent», что мне писать? –

+1

вместо YourContext вы должны установить свой экземпляр активности, а YourParent - это основной макет, который вы хотите добавить в него кнопку « – MHossein

+0

», пожалуйста, пришлите мне небольшой пример? Файл XML и mainactivity.java спасибо –

1

Имейте это для XML -

<?xml version="1.0" encoding="utf-8"?> 
<ScrollView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <LinearLayout 
     android:orientation="vertical" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:gravity="center"> 

     <Button 
      android:id="@+id/myButton" 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:text="Add one more" /> 

     <LinearLayout 
      android:orientation="vertical" 
      android:id="@+id/myLinearLayout" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:gravity="center"> 

     </LinearLayout> 

    </LinearLayout> 
</ScrollView> 

И это Java-

final LinearLayout linearLayout = (LinearLayout)findViewById(R.id.myLinearLayout); 
    Button button = (Button)findViewById(R.id.myButton); 
    button.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Button button = new Button(MainActivity.this); 
      button.setText("A new Button"); 
      linearLayout.addView(button); 
     } 
    }); 
+0

С программой-программой ошибки завершен. –

+0

Можете ли вы дать более подробную информацию об ошибке? –

+0

Когда я запускаю его: к сожалению, название программы остановлено. –

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