Android Dinamik Button Nasıl Oluşturulur?

Dinamik içerikler oluşturmak her zaman avantajlı olacaktır. Button örneğinden yola çıkarak tüm her şeyi dinamik olarak oluşturabilirsiniz. İlk olarak global olarak tanımlamalarımızı yapalım.

private int selectTitle;
private Button myButton ;

Aşağıdaki methodu oncreate içerisinde çağırın ve menüleriniz oluşacaktır. (Her biri için ayrı ayrı id belirtmek için Button [] mybutton tanımlayınız.)

//dinamik buton oluşturma ve tıklananı seçme
private void customButton() {

    LinearLayout ll = (LinearLayout)findViewById(R.id.btn_layout);
    LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);

   

    for(int i=0;i<10;i++) {
        myButton = new Button(this);

        myButton.setId(i);
        final int myButtonId = myButton.getId();
        myButton.setText("Menü "+myButtonId);
       ll.addView(myButton, lp);
        myButton = ((Button) findViewById(myButtonId));
        myButton.setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {

                selectTitle=myButtonId;
                Toast.makeText(getApplicationContext(),"Seçilen: "+selectTitle,Toast.LENGTH_LONG).show();
            }
        });
    }

}

 

Eğer bir resim ve text view ekleyeceksek bir adet xml oluşturun ve aşağıdaki kodları inceleyin.

import android.content.Context;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.LinearLayout;

        public class MainActivity extends AppCompatActivity {

            private LinearLayout parentLinearLayout;

            @Override
            public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.activity_main);
                parentLinearLayout = (LinearLayout) findViewById(R.id.parent_linear_layout);
            }
            public void onAddField(View v) {
                LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                final View rowView = inflater.inflate(R.layout.field, null);
                // Add the new row before the add field button.
                parentLinearLayout.addView(rowView, parentLinearLayout.getChildCount() - 1);
            }

            public void onDelete(View v) {
                parentLinearLayout.removeView((View) v.getParent());
//tümünü silmek için removeAllViews() kullanılır
            }

        }

 

dinamik_button

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

This site uses Akismet to reduce spam. Learn how your comment data is processed.