Minggu, 26 April 2015

Contoh Aplikasi Dialog

Layout Main
 <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"
    tools:context=".HitungBangun" >

    <Button
        android:id="@+id/btnBangunDatar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:text="Bangun Datar"
        tools:ignore="HardcodedText" />

</RelativeLayout>

Layout Segitiga
<?xml version="1.0" encoding="utf-8"?>
<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" >

    <EditText
        android:id="@+id/txtSisi"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:ems="10"
        android:hint="Sisi"
        android:inputType="numberDecimal"
        tools:ignore="HardcodedText" >

        <requestFocus />
    </EditText>

</LinearLayout>

Class MainActivity
import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class MainActivity extends Activity {
    Button buttonBangunDatar;
    CharSequence jenisBangunDatar[]={"Segitiga","Persegi"};
    Context context=this;
  
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
buttonBangunDatar=(Button)findViewById(R.id.btnBangunDatar);
      
        buttonBangunDatar.setOnClickListener(new OnClickListener() {
          
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                dialogBangunDatar();
            }
        });
    }

    public void dialogBangunDatar(){
        AlertDialog.Builder builder=new AlertDialog.Builder(this);
      
        builder.setTitle("Bangun Datar");
        builder.setItems(jenisBangunDatar,new DialogInterface.OnClickListener() {
          
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                if(jenisBangunDatar[arg1].equals("Segitiga")){
                    LayoutInflater inflater=getLayoutInflater();
                    RumusActivity.hitungSegitiga(context, inflater);
                }else{
                    //tampil error message. lihat materi pertemuan 10
                }
            }
        } );
      
        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }
    
  
}

Class RumusActivity
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.EditText;

public class RumusActivity {
   
      public static void hitungSegitiga(final Context context, LayoutInflater inflater){
            
            AlertDialog.Builder builder=new AlertDialog.Builder(context);
           
            final View viewSegitiga=inflater.inflate(R.layout.activity_rumus_segitiga, null);
           
            builder.setTitle("Segitiga");
            builder.setView(viewSegitiga);
           
            builder.setPositiveButton("Luas", new DialogInterface.OnClickListener() {
               
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    EditText alas=(EditText)viewSegitiga.findViewById(R.id.txtAlas);
                    EditText tinggi=(EditText)viewSegitiga.findViewById(R.id.txtTinggi);
       
                    double a=Double.parseDouble(alas.getText().toString());
                    double t=Double.parseDouble(tinggi.getText().toString());
                   
                    double luas=a*t/2;
                   
                    RumusActivity.hasil("Luas", luas, context);
                }
            });
           
            builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
               
                @Override
                public void onClick(DialogInterface arg0, int arg1) {
                    // TODO Auto-generated method stub
                    arg0.cancel();
                }
            });
           
            AlertDialog alertDialog=builder.create();
            alertDialog.show();
        }

public static void hasil(String title,double hasil,Context context){
            AlertDialog.Builder builder=new AlertDialog.Builder(context);
            builder.setTitle(title);
            builder.setMessage(hasil+"");
            builder.setNeutralButton("Oke", new DialogInterface.OnClickListener() {
               
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    // TODO Auto-generated method stub
                    dialog.cancel();
                }
            }).create().show();
        }
}

Materi Pertemuan 11 (Dialog 2)

Xml
 <Button
        android:id="@+id/btnradio"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="210dp"
        android:text="Radio Dialog"
        tools:ignore="HardcodedText" />
  
    <Button
        android:id="@+id/btncheck"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="260dp"
        android:text="Check Dialog"
        tools:ignore="HardcodedText" />

<Button
      android:id="@+id/btnCustom"
      android:layout_width="fill_parent"
      android:layout_height="wrap_content"
      android:layout_alignParentLeft="true"
      android:layout_below="@+id/btncheck"
      android:text="Login Dialog"
      tools:ignore="HardcodedText" />

Java

Deklarasi variabel class MainActivity
Button buttonRadio;
Button buttonCheck;
Button buttonCustom;
ArrayList<Integer> arrayList=new ArrayList<Integer>();
Context context=this;
EditText user;
EditText pass;

Konfigurasi class onCreate
buttonCheck=(Button) findViewById(R.id.btncheck);
buttonCustom=(Button)findViewById(R.id.btnCustom);
buttonCustom=(Button)findViewById(R.id.btnCustom);

buttonRadio.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionRadio();
            }
        });
       
        buttonCheck.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionCheck();
            }
        });

 buttonCustom.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionCustomDialog();
            }
        });

Logika Program Class
public void actionRadio(){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle("Radio Items");
        builder.setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() {
  
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                Toast.makeText(context, items[arg1], Toast.LENGTH_LONG).show();
            }
        });
  
        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }
  
    public void actionCheck(){
       
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle("CheckBox List");
        builder.setMultiChoiceItems(items, null, new DialogInterface.OnMultiChoiceClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which, boolean isChecked) {
                // TODO Auto-generated method stub
                if(isChecked){
                    arrayList.add(which);
                }else{
                    arrayList.remove(Integer.valueOf(which));
                }
            }
        });

        builder.setPositiveButton("Yes", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                String sequence="";

                for(int i=0;i<arrayList.size();i++){
                    int x=arrayList.get(i);
                    sequence +=items[x] + "\n";
                }

                Toast.makeText(context,sequence, Toast.LENGTH_LONG).show();

                arrayList.clear();

            }
        });

        builder.setNegativeButton("No", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

            }
        });

        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }

public void actionCustomDialog(){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);

        LayoutInflater inflater=getLayoutInflater();
        final View view=inflater.inflate(R.layout.custom_layout, null);
        builder.setTitle("LOGIN");
        builder.setIcon(R.drawable.ic_launcher);
        builder.setView(view);
        builder.setPositiveButton("Sign In", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub

                user=(EditText) view.findViewById(R.id.editUser);
                pass=(EditText) view.findViewById(R.id.editPass);

                String u=user.getText().toString();
                String p=pass.getText().toString();

                Toast.makeText(context,"Username : " + u +"\n"
                        +"Password : "+ p, Toast.LENGTH_LONG).show();
            }
        });

        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface dialog, int which) {
                // TODO Auto-generated method stub
                dialog.cancel();
            }
        });

        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }

Minggu, 19 April 2015

Materi Pertemuan 10 (Dialog 1)

Xml
<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"
    tools:context=".MainActivity" >

    <Button
        android:id="@+id/btnNeutral"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="10dp"
        android:text="Message Dialog"
        tools:ignore="HardcodedText" />

    <Button
        android:id="@+id/btnKeluar"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="60dp"
        android:text="Exit Dialog"
        tools:ignore="HardcodedText" />
   
    <Button
        android:id="@+id/btnListarray"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="110dp"
        android:text="List Dialog (Array)"
        tools:ignore="HardcodedText" />
   
    <Button
        android:id="@+id/btnListmysql"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:layout_marginTop="160dp"
        android:text="List Dialog (MySQL)"
        tools:ignore="HardcodedText" />
</RelativeLayout>

Java
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.List;

import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.client.params.HttpClientParams;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONObject;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.text.Html;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

public class MainActivity extends Activity {

    Button buttonNeutral;
    Button buttonKeluar;
    Button buttonListArray;
    Button buttonListMySQL;
    Button buttonRadio;
    Button buttonCheck;
    Context context=this;
    CharSequence items[]={"Ubuntu","Mandriva","Mint"};
    ArrayList<Integer> arrayList=new ArrayList<Integer>();
    Button buttonCustom;   
    EditText user;
    EditText pass;
    private final String urlContoh = "http://10.0.2.2/contoh/getUser.php";   

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

        buttonNeutral=(Button) findViewById(R.id.btnNeutral);
        buttonKeluar=(Button) findViewById(R.id.btnKeluar);
        buttonListArray=(Button) findViewById(R.id.btnListarray);
        buttonListMySQL=(Button) findViewById(R.id.btnListmysql);
        buttonRadio=(Button) findViewById(R.id.btnradio);
        buttonCheck=(Button) findViewById(R.id.btncheck);
        buttonCustom=(Button)findViewById(R.id.btnCustom);

        buttonNeutral.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionNeutralButton();
            }
        });

        buttonKeluar.setOnClickListener(new OnClickListener() {

            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionKeluar();
            }
        });
       
        buttonListArray.setOnClickListener(new OnClickListener() {
           
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionDialogListArray();
            }
        });
   
        buttonListMySQL.setOnClickListener(new OnClickListener() {
          
            @Override
            public void onClick(View arg0) {
                // TODO Auto-generated method stub
                actionDialogListMySQL();
            }
        });

    }

    public void actionKeluar(){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle("Konfirmasi");
        builder.setMessage("Apakah Anda Akan Keluar ?");
        builder.setCancelable(false);
        builder.setPositiveButton("Ya", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                MainActivity.this.finish();
            }
        });

        builder.setNegativeButton("Tidak", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                arg0.cancel();
            }
        });

        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }

    public void actionNeutralButton(){
        new AlertDialog.Builder(this).setTitle("Ini Title")
            .setMessage("Ini Message")
            .setNeutralButton("Oke", new DialogInterface.OnClickListener() {

            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                //Tidak melakukan apapun
            }
        }).show();
    }
   
    public void actionDialogListArray(){
        AlertDialog.Builder builder=new AlertDialog.Builder(context);
        builder.setTitle("Distro Linux");
        builder.setItems(items, new DialogInterface.OnClickListener() {
 
            @Override
            public void onClick(DialogInterface arg0, int arg1) {
                // TODO Auto-generated method stub
                Toast.makeText(context, items[arg1], Toast.LENGTH_LONG).show();
            }
        });
 
        AlertDialog alertDialog=builder.create();
        alertDialog.show();
    }

    private void actionDialogListMySQL() {
        // TODO Auto-generated method stub
        JSONObject json = null;
        List<String> data = new ArrayList<String>();
        try {
            String jsonString = MainActivity.getRequestFromServer(urlContoh);           
            JSONObject jObject = new JSONObject(jsonString);

            JSONArray newsJsonArray = jObject.getJSONArray("user");           
            for (int i = 0; i < newsJsonArray.length(); i++) {               
                json = newsJsonArray.getJSONObject(i);
                data.add(json.getString("un"));               
            }           
           
        } catch (Exception e) {
            e.printStackTrace();
        }       
        final CharSequence[] items = data.toArray(new CharSequence[data.size()]);       
        AlertDialog.Builder kk = new AlertDialog.Builder(this);
        kk.setTitle("Pilih Lokasi");       
        kk.setItems(items, new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int item) {
                Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show();
                }
            }).show();
    }
   
    public static String getRequestFromServer(String url){       
        try {
            Class<?> strictModeClass = Class.forName("android.os.StrictMode", true, Thread.currentThread()
                    .getContextClassLoader());

            Class<?> threadPolicyClass = Class.forName("android.os.StrictMode$ThreadPolicy", true, Thread
                    .currentThread().getContextClassLoader());

            Class<?> threadPolicyBuilderClass = Class.forName("android.os.StrictMode$ThreadPolicy$Builder", true,
                    Thread.currentThread().getContextClassLoader());

            Method setThreadPolicyMethod = strictModeClass.getMethod("setThreadPolicy", threadPolicyClass);

            Method detectAllMethod = threadPolicyBuilderClass.getMethod("detectAll");
            Method penaltyMethod = threadPolicyBuilderClass.getMethod("penaltyLog");
            Method buildMethod = threadPolicyBuilderClass.getMethod("build");

            Constructor<?> threadPolicyBuilderConstructor = threadPolicyBuilderClass.getConstructor();
            Object threadPolicyBuilderObject = threadPolicyBuilderConstructor.newInstance();

            Object obj = detectAllMethod.invoke(threadPolicyBuilderObject);

            obj = penaltyMethod.invoke(obj);
            Object threadPolicyObject = buildMethod.invoke(obj);
            setThreadPolicyMethod.invoke(strictModeClass, threadPolicyObject);

        } catch (Exception ex) {
            Log.w("Thread Policy", ex);
        }

        String result = "Succeed";
        HttpClient client = new DefaultHttpClient();
        HttpClientParams.setRedirecting(client.getParams(), true);
        HttpGet request = new HttpGet(url);
        try{
            HttpResponse response = client.execute(request);
            InputStream in = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder str = new StringBuilder();
            String line = null;
            int lineCount = 0;
            while((line = reader.readLine()) != null){
                if(lineCount>0) str.append("\n");
                str.append(line);
            }
            in.close();
            result = str.toString();
            Log.w("get Request", "asli : "+result);
            if(result.indexOf("<") > 0){
                result = result.substring(0, result.indexOf("<"));
            }
            Log.w("get Request", "proses : "+Html.fromHtml(result));
            return Html.fromHtml(result).toString();           
        }catch(Exception ex){
            ex.printStackTrace();
            result = "Error";
        }
        return result;
    }
   
}

Minggu, 12 April 2015

Materi Pertemuan 9 (Widget2)

Buat Splash Screen

Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:background="#ffffff00">

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Splash Screen" />
</LinearLayout>
Java
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.Menu;

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Thread background = new Thread() {
            public void run() {
                try {
                    sleep(3*1000);
                    Intent i=new Intent(getBaseContext(),TabActivity.class);
                    startActivity(i);
                    
                    finish();
                } catch (Exception e) {}
            }
        };
        
        background.start();

    }
   
    protected void onDestroy() {
        super.onDestroy();        
    }   

}

Buat Tab
Xml
<?xml version="1.0" encoding="utf-8"?>
<TabHost xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:id="@+id/tabHost1">
    <TabWidget
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:id="@android:id/tabs">       
    </TabWidget>
    <FrameLayout
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:id="@android:id/tabcontent">
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:id="@+id/tab1"
            android:orientation="vertical"
            android:paddingTop="60px">
            <ImageView
                android:layout_width="fill_parent"
                android:layout_height="wrap_content"
                android:src="@drawable/gambar">               
            </ImageView>           
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/tab2"
            android:orientation="vertical"
            android:paddingTop="60px">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="100px"
                android:text="this is tab 2"
                android:id="@+id/txt2">               
            </TextView>                           
        </LinearLayout>
        <LinearLayout
            android:layout_width="fill_parent"
            android:layout_height="fill_parent"
            android:id="@+id/tab3"
            android:orientation="vertical"
            android:paddingTop="60px">
            <TextView
                android:layout_width="fill_parent"
                android:layout_height="100px"
                android:text="this is tab 3"
                android:id="@+id/txt3">               
            </TextView>                           
        </LinearLayout>       
    </FrameLayout>
</TabHost>   

Java
import android.app.Activity;
import android.os.Bundle;
import android.widget.TabHost;
import android.widget.TabHost.TabSpec;

public class TabActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_tab);
        TabHost tabHost = (TabHost) findViewById(R.id.tabHost1);
        tabHost.setup();       
        TabSpec tabSpec1 = tabHost.newTabSpec("Tab 1");
        tabSpec1.setContent(R.id.tab1);
        tabSpec1.setIndicator("Tab 1");
        TabSpec tabSpec2 = tabHost.newTabSpec("Tab 2");
        tabSpec2.setContent(R.id.tab2);
        tabSpec2.setIndicator("Tab 2");
        TabSpec tabSpec3 = tabHost.newTabSpec("Tab 3");
        tabSpec3.setContent(R.id.tab3);
        tabSpec3.setIndicator("Tab 3");
        tabHost.addTab(tabSpec1);
        tabHost.addTab(tabSpec2);
        tabHost.addTab(tabSpec3);
    }
}

Buat Spinner
Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
    <TextView
        android:id="@+id/selection"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        />
    <Spinner android:id="@+id/spinner"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:drawSelectorOnTop="true"
       
    />
</LinearLayout>



Java
import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.TextView;


public class SpinnerActivity extends Activity implements OnItemSelectedListener {
    TextView selection;   
    String[] items={"Aceh", "Sumatera Utara", "Sumatera Barat", "Riau", "Jambi",
            "Sumatera Selatan", "Bengkulu", "Lampung", "Bangka Belitung", "Kepulauan Riau",
            "Jakarta", "Jawa Barat", "Jawa Tengah", "Yogyakarta", "JawaTimur",
            "Banten", "Bali", "Nusa Tenggara Barat", "Nusa Tenggara Timur", "Kalimantan Barat",
            "Kalimantan Tengah", "Kalimantan Selatan", "Kalimantan Timur", "Sulawesi Utara",
            "Sulawesi Tengah","SulawesiSelatan","Sulawesi Tenggara","Gorontalo","Sulawesi Barat",
            "Maluku","MalukuUtara","PapuaBarat","Papua"};

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_spinner);
        selection = (TextView) findViewById(R.id.selection);
        Spinner spin = (Spinner) findViewById(R.id.spinner);
        spin.setOnItemSelectedListener(this);
        ArrayAdapter<String>aa = new ArrayAdapter<String>(this, android.R.layout.simple_spinner_item,items);
        aa.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
        spin.setAdapter(aa);
    }

    public void onItemSelected(AdapterView<?> parent, View v, int position, long id) {
        selection.setText("Pilihan Anda: "+items[position]);
    }

    public void onNothingSelected(AdapterView<?> parent) {
        selection.setText("Search ...");
    }
}

Buat Autocomplete
Xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent">
    <TextView android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/textView1"
        android:text="@string/perintah">       
    </TextView>
    <AutoCompleteTextView android:id="@+id/edit"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:completionThreshold="3" />
    <TextView android:layout_width="fill_parent"
        android:text="TextView"
        android:layout_height="wrap_content"
        android:id="@+id/hasil">           
    </TextView>
</LinearLayout>


Java
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.TextView;

public class AutoCompleteActivity extends Activity implements TextWatcher{
    TextView hasil;
    AutoCompleteTextView edit;
    String[] item = { "Merbabu", "Merapi", "Lawu", "Rinjani","Sumbing","Sindoro", "Krakatau", "Selat Sunda", "SelatBali","Selat Malaka","Kalimantan", "Sulawesi", "Jawa" };
   
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_auto_complete);
        hasil = (TextView) findViewById(R.id.hasil);
        edit = (AutoCompleteTextView) findViewById(R.id.edit);
        edit.addTextChangedListener(this);
        edit.setAdapter(new ArrayAdapter<String>(this,android.R.layout.simple_dropdown_item_1line, item));
        }
   
    public void onTextChanged(CharSequence s, int start, int before, int count) {
        hasil.setText(edit.getText());           
    }
   
    public void beforeTextChanged(CharSequence s, int start, int count, int after) {       
    }
   
    public void afterTextChanged(Editable s) {       
    }
}