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.
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.
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);
}
}
0 Comments