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
pak….ini kalo di run di gingger bread bisa gak ya ???
@rahmad = bantu jawab,, bisa di bagian androidmanifest.xml ada bagian
nah minSDKVersionnya tinggal diganti