Android Dinamik Button Nasıl Oluşturulur?

dinamik_button

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

İlk yorum yapan olun

Bir yanıt bırakın

E-posta hesabınız yayımlanmayacak.


*


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