Belajar Android Membuat Spinner Navigation pada Action Bar

Jumpa lagi dengan agus haryanto, kali ini kita masih membahas tentan salah action bar yaitu Spinner Navigation

Masih melanjutkan project sebelumnya, sekarang kita akan mencoba bentuk navigasi menu yang lain yang sering disebut dengan nama Spinner Navigation.  Sesuai dengan namanya Spinner Navigation adalah menu navigasi yanga di action bar yang bentiknya sepert spinner. sekarang mari kita ikuti langkah pembuatannya

1. Buka project Jadwal Pelajaran yang ada pada tutorial sebelumnya

2. Buat layout baru dengan nama row_spinnermenu_item.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="fill_parent"
    android:padding="5dp" >

    <ImageView android:id="@+id/imgIcon"
        android:layout_width="25dp"
        android:layout_height="25dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:src="@drawable/ic_launcher"
        android:layout_marginRight="5dp"
        />

    <TextView android:id="@+id/txtTitle"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerVertical="true"
        android:layout_toRightOf="@id/imgIcon"/>

</RelativeLayout>

3. Buat class baru dengan nama SpinnerNavItem.java class ini berfungsi sebagai model dari isi spinner.

package com.agusharyanto.jadwalpelajaran;

public class SpinnerNavItem {

    private String title;
    private int icon;

    public SpinnerNavItem(String title, int icon){
        this.title = title;
        this.icon = icon;
    }

    public String getTitle(){
        return this.title;
    }

    public int getIcon(){
        return this.icon;
    }
}

4. Buat class baru dengan nama SpinnerMenuAdapter.java, karena isi dari Spinnernya ada icon gambar dan text maka kita harus buta adapternya sendiri.

package com.agusharyanto.jadwalpelajaran;

import java.util.ArrayList;

import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class SpinnerMenuAdapter extends BaseAdapter {

    private ImageView imgIcon;
    private TextView txtTitle;
    private ArrayList<SpinnerNavItem> spinnerNavItem;
    private Context context;

    public SpinnerMenuAdapter(Context context,
            ArrayList<SpinnerNavItem> spinnerNavItem) {
        this.spinnerNavItem = spinnerNavItem;
        this.context = context;
    }

    @Override
    public int getCount() {
        return spinnerNavItem.size();
    }

    @Override
    public Object getItem(int index) {
        return spinnerNavItem.get(index);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.row_spinnermenu_item, null);
        }

        imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
        txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);

        imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
        imgIcon.setVisibility(View.GONE);
        txtTitle.setText(spinnerNavItem.get(position).getTitle());
        return convertView;
    }

    @Override
    public View getDropDownView(int position, View convertView, ViewGroup parent) {
        if (convertView == null) {
            LayoutInflater mInflater = (LayoutInflater)
                    context.getSystemService(Activity.LAYOUT_INFLATER_SERVICE);
            convertView = mInflater.inflate(R.layout.row_spinnermenu_item, null);
        }

        imgIcon = (ImageView) convertView.findViewById(R.id.imgIcon);
        txtTitle = (TextView) convertView.findViewById(R.id.txtTitle);

        imgIcon.setImageResource(spinnerNavItem.get(position).getIcon());
        txtTitle.setText(spinnerNavItem.get(position).getTitle());
        return convertView;
    }

}

5. Buat class baru dengan nama SpinnerMenuNavigationActivity.java disinilah inti koding pada Spinner Navigation

package com.agusharyanto.jadwalpelajaran;

import java.util.ArrayList;

import android.app.ActionBar;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

public class SpinnerNavigationActivity extends Activity implements ActionBar.OnNavigationListener{

    // action bar
    private ActionBar actionBar;

    // Title navigation Spinner data
    private ArrayList<SpinnerNavItem> navSpinner;

    // Navigation adapter
    private SpinnerMenuAdapter adapter;

    ArrayList <Jadwal> list_jadwal = new ArrayList<Jadwal>();
	TextView tvhari;
	ListView listviewjadwal ;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		tvhari = (TextView) findViewById(R.id.textViewHari);
		listviewjadwal = (ListView) findViewById(R.id.listViewJadwal);
		initData();

        actionBar = getActionBar();

        // Hide the action bar title
        actionBar.setDisplayShowTitleEnabled(false);

        // Enabling Spinner dropdown navigation
        actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_LIST);

        // Spinner title navigation data
        navSpinner = new ArrayList<SpinnerNavItem>();
        navSpinner.add(new SpinnerNavItem("Senin", R.drawable.ic_launcher));
        navSpinner.add(new SpinnerNavItem("Selasa", R.drawable.ic_launcher));
        navSpinner.add(new SpinnerNavItem("Rabu", R.drawable.ic_launcher));
        navSpinner.add(new SpinnerNavItem("Kamis", R.drawable.ic_launcher));
        navSpinner.add(new SpinnerNavItem("Jumat", R.drawable.ic_launcher));

        // title drop down adapter
        adapter = new SpinnerMenuAdapter(getApplicationContext(), navSpinner);

        // assigning the spinner navigation
        actionBar.setListNavigationCallbacks(adapter, this);
    }

	public void initData() {
		list_jadwal.add(new Jadwal("Senin","08:00-10:00","Matematika"));
		list_jadwal.add(new Jadwal("Senin","10:00-12:00","Agama Islam"));
		list_jadwal.add(new Jadwal("Senin","12:00-13:00","Istirahat"));
		list_jadwal.add(new Jadwal("Senin","13:00-15:00","Fisika"));
		list_jadwal.add(new Jadwal("Selasa","08:00-10:00","Bahasa Indonesia"));
		list_jadwal.add(new Jadwal("Selasa","10:00-12:00","Kimia"));
		list_jadwal.add(new Jadwal("Selasa","12:00-13:00","Istirahat"));
		list_jadwal.add(new Jadwal("Selasa","13:00-15:00","Biologi"));
		list_jadwal.add(new Jadwal("Rabu","08:00-10:00","Matematika"));
		list_jadwal.add(new Jadwal("Rabu","10:00-12:00","Seni Rupa"));
		list_jadwal.add(new Jadwal("Rabu","12:00-13:00","Istirahat"));
		list_jadwal.add(new Jadwal("Rabu","13:00-15:00","Bahasa Inggris"));
		list_jadwal.add(new Jadwal("Kamis","08:00-10:00","Fisika"));
		list_jadwal.add(new Jadwal("Kamis","10:00-12:00","Penjaskes"));
		list_jadwal.add(new Jadwal("Kamis","12:00-13:00","Istirahat"));
		list_jadwal.add(new Jadwal("Kamis","13:00-15:00","Geografi"));
		list_jadwal.add(new Jadwal("Jumat","08:00-10:00","Pemrograman Java"));
		list_jadwal.add(new Jadwal("Jumat","10:00-12:00","Pemrograman Android"));
		list_jadwal.add(new Jadwal("Jumat","12:00-13:00","Istirahat"));
		list_jadwal.add(new Jadwal("Jumat","13:00-15:00","Logika Algoritma"));
	}

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
    	return true;
    }

    /**
     * On selecting action bar icons
     * */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {

    	return true;
    }

    /**
     * Actionbar navigation item select listener
     * */
    @Override
    public boolean onNavigationItemSelected(int itemPosition, long itemId) {
    // Action to be taken after selecting a spinner item
    	Toast.makeText(getBaseContext(), "menu:"+navSpinner.get(itemPosition).getTitle(), Toast.LENGTH_SHORT).show();
    	showJadwal(navSpinner.get(itemPosition).getTitle());
        return false;
    }

public void showJadwal(String hari) {

		tvhari.setText("Hari " + hari);
		ArrayList<Jadwal> jadwal_terpilih = new ArrayList<Jadwal>();
			for (int i = 0; i < list_jadwal.size(); i++) {
				Jadwal jadwal = list_jadwal.get(i);
				if (jadwal.hari.equals(hari)) {
					jadwal_terpilih.add(jadwal);
				}
			}

		AdapterJadwal adapterjadwal = new AdapterJadwal(SpinnerNavigationActivity.this, 0,
				jadwal_terpilih);
		listviewjadwal.setAdapter(adapterjadwal);

	}
}

6. Rubah AndroidManifest.xml untuk Activity yang pertama kali di eksekusi dari MainActivity ke SpinnerNavigationActivity.

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.agusharyanto.jadwalpelajaran"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="11"
        android:targetSdkVersion="18" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="<strong>com.agusharyanto.jadwalpelajaran.SpinnerNavigationActivity</strong>"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>

7. Sekarang mari kita Run projectnya.

Klik Spinner Navigation di pojok kiri atas

Pilih Hari Jumat

Bagaimana, mudahkan buatnya, Action Bar di android memang mantap. Tambah lagi senjata kita untuk navigasi menu.

Di bulan Februari ini untuk para developer Android ada kabar gembira lho. Kabarnya adalah para developer android indonesia, sudah bisa jualan aplikasi di Play Storenya Google. Artinya tambah lagi satu pintu untuk menambah penghasilan. Untuk itu buatlah aplikasi yang bagus lalu jual bayangkan misal harga aplikasinya $1 ada yang download 1000 orang berart dapat $1000 kalau 10000 orang berarti $10000 sudah bisa untuk pergi haji, yang belum nikah bisa jadi modal untuk melamar dan menilkahi gadis pilihannya.  Satu lagi android itukan buatn aplikasinya pakai java jadi berusahalah untuk belajar dan memahami bahasa java. semakin bagus pemahamam kita tentang java semakin bertambah pula kemampuan kita untuk membuat aplikasi android yang bagus.

Semoga Bermanfaat

Salam Hangat Developer Android

Agus Haryanto

Developer dan Pembicara Seminar IT

Referensi : http://www.androidhive.info/2013/11/android-working-with-action-bar/

Buat yang masih bingung menginstall software untuk aplikasi android bisa melihat di Persiapan Software untuk Develop Aplikasi Android

2 comments to Belajar Android Membuat Spinner Navigation pada Action Bar

Leave a Reply

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>