ZDIRY-TUFWT-EBONM-EYJ00-IDBLANTER.COM
ZDIRY-TUFWT-EBONM-EYJ00

BLANTERWISDOM105

Buat Button Dinamis (Button Dynamically) Android

3/29/2021

Ada kalanya kita perlu untuk mengenerate screen secara dinamis atau penambahan Edittext lainnya dengan id yang sama untuk keperluan database. Sepertihalnya kemampuan Bahasa yang kita miliki.

Button Dinamis Android

Lalu bagaimana cara membuat tampilan button dinamis tersebut adalah dengan menggunakan LayoutInflater yang merupakan salah satu class atau library yang digunakan untuk menjadikan atau mengconvert file layout xml,sebagai View object baru ,di dalam layout utama.

Jadi prosesnya kita harus memiliki item_list.xml dan LinearLayout sebut saja id=Container yang ada di Activity_main.xml. Inflater ini bertugas untuk memasukan item_list.xml ke LinearLayout di dalam Activity_main.xml.

Layout Inflater adalah

Di bawah ini adalah cara membuatnya

Pertama, Create New Project >> Phone & Tables >> Empty Activity >> Pilih API 16: Android 4.1

Kedua, buat tampilan xml sepeti dibawah ini,


<LinearLayout 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:orientation="vertical"
    tools:context=".MainActivity" >

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_gravity="center_horizontal"
        android:autoLink="web"
        android:text="http://agungpanduan.com/"
        android:textStyle="bold" />

    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content">
        <Button
            android:id="@+id/add"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentRight="true"
            android:text="Add"/>
        <EditText
            android:id="@+id/textin"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_toLeftOf="@id/add"/>
    </RelativeLayout>
    <LinearLayout
        android:id="@+id/container"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical">
    </LinearLayout>

</LinearLayout>

Ketiga, Buat Layout Konten kita namakan saja row.xml simpan di folder yang sama dengan Activity_main.xml yaitu app>>res>layout.



<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="wrap_content">
    <Button
        android:id="@+id/remove"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentRight="true"
        android:text="Remove"/>
    <Button
        android:id="@+id/getvalue"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/remove"
        android:text="GetValue"/>

    <Button
        android:id="@+id/getindex"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_toLeftOf="@id/getvalue"
        android:text="GetIndex"/>

    <EditText
        android:id="@+id/textedit"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_toLeftOf="@id/remove"/>
</RelativeLayout>

Keempat, buat logic untuk membuat Button Add Dinamis di MainActivity.java


package com.example.dyamicaddbutton;

import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.LinearLayout;
import android.widget.TextView;
import android.animation.LayoutTransition;
import android.app.Activity;
import android.content.Context;
import android.widget.Toast;

public class MainActivity extends Activity {

    EditText textIn;
    Button buttonAdd;
    LinearLayout container;
    Object value;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        textIn = (EditText)findViewById(R.id.textin);
        buttonAdd = (Button)findViewById(R.id.add);
        container = (LinearLayout)findViewById(R.id.container);

        buttonAdd.setOnClickListener(new OnClickListener(){

            @Override
            public void onClick(View arg0) {
                LayoutInflater layoutInflater =
                        (LayoutInflater) getBaseContext().getSystemService(Context.LAYOUT_INFLATER_SERVICE);
                final View addView = layoutInflater.inflate(R.layout.row, null);
                //final TextView textOut = (TextView)addView.findViewById(R.id.textout);
                final EditText textEdit = (EditText)addView.findViewById(R.id.textedit);

                textEdit.setText(textIn.getText().toString());
                Button buttonRemove = (Button)addView.findViewById(R.id.remove);
                buttonRemove.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        ((LinearLayout)addView.getParent()).removeView(addView);
                    }});

                Button buttonGetIndex = (Button)addView.findViewById(R.id.getindex);
                buttonGetIndex.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        LinearLayout getContainer = (LinearLayout) addView.getParent();
                        value=getContainer.indexOfChild(addView);
                        Toast.makeText(v.getContext(), value.toString(), Toast.LENGTH_SHORT).show();
                    }});

                Button buttonGetValue = (Button)addView.findViewById(R.id.getvalue);
                buttonGetValue.setOnClickListener(new OnClickListener(){

                    @Override
                    public void onClick(View v) {
                        EditText editText1 = (EditText) addView.findViewById(R.id.textedit);
                        value=editText1.getText().toString();
                        Toast.makeText(v.getContext(), value.toString(), Toast.LENGTH_SHORT).show();
                    }});

                container.addView(addView, 0);
            }});

        LayoutTransition transition = new LayoutTransition();
        container.setLayoutTransition(transition);
    }
}

Share This :

0 Comments