Aku menulis apa yang ingin aku tulis, bukan yang ingin kamu baca.

Thursday, December 3, 2015

AlQuran dan Seperangkat Alat Sholat darinya

Hai blog...

Aku kembali...

Iya.. aku sepertinya sedang sangat kacau, butuh tempat untuk mengalihkan pikiran yang tak berhenti berputar pada hal itu-itu saja. Aku bosan. Tapi aku tahu ini hanya bagian dari proses.

Ya sudahlah. Aku tidak mau membahas itu.
By the way, blog. Aku mau mengenalkanmu pada salah satu sahabat yang akhir-akhir ini sedang akrab denganku. Bukan! Bukan Patrick lagi.

Namanya Khatijah.

Dia juga salah satu sahabat paling ampuh untuk mengalihkan pikiran.

Khatijah mengingatkanku pada salah satu teman kampusku. Ya, dia inspirasiku.

Aku percaya bahwa kebaikan pada seseorang tumbuh karena kebaikan dari sekitarnya. Maka dari itu aku selalu berdoa agar aku dipertemukan dengan orang-orang baik, agar mereka dapat mempengaruhiku.
Dan Allah baik sekali mempertemukanku dengannya.

Dia bukan siapa-siapa hanya manusia biasa, namun banyak hal yang aku kagumi darinya.

Ketika dia mengajak kebaikan, dia bukan hanya bicara atau ceramah, tapi dia mencontohkan, tanpa meminta. Kemudian perlahan dia mengajak dengan memberi.

Aku baru sadar, ternyata dia sudah memberiku seperangkat alat sholat dan al-quran. Haha.. seperti mahar pernikahan saja. Sayangnya dia perempuan.

Waktu itu dia memberiku mukena, ketika dia juga akan menyisipkan mukena ke musola kampus.

“Fa! Sekarang kalau ke kampus mukena ini bisa dibawa. Jadi bisa sholat tanpa antri lagi.”

Atau ketika aku mau berangkat ke Korea.

“Fa... ini dibuka pas di sana ya? Aku yakin kamu bakal butuh ini banget di sana.”

Ternyata isinya al quran, yang selanjutnya aku beri nama Khatijah.

Ya Allah..

Semoga aku senantiasa ditemukan dengan orang-orang baik. Aku sadar aku masih belajar dan kadang butuh pemandu, maka dari itu bantu aku. Bantu aku agar menjadi lebih baik. Jauhkan aku dari orang-orang penyakit hati dan pelupa akhirat. Semoga di setiap aku melangkah aku selalu ditemukan dengan orang-orang yang membuatku tetap di jalan-Mu, yang juga mau memandu atau mengajari kebaikan baik untuk duniaku maupun akhiratku. Amin.

Read More

Tuesday, December 1, 2015

I am missing home

Hello world..

I've just installed a blogger app on my phone, and this is my first post using it. Yes, I am not with Patrick right now, so Bambang is fine.

By the way.. i am really missing home. I know I've just been staying few days in Semarang. But, "missing" is not about how long we separate. It is also about how big i need them right now. I am so desperate with this f*cking damn ass thes*s. I need them to make me calm.

Ah well, i found this pict in my gallery. So, let me introduce you. She is my mom, of course. It's weird because she is taller than me. Haha. Daughter used to higher than her mom. Maybe i got the thingamajig gene. i forget the name.. "gen resesif" maybe. So, like....

Tt >< Tt = TT, Tt, tt

Maybe I got this "tt" on my chromosome. Haha. But, hey.. let see the positive side. Because my mom is taller and bigger than me, it is really comfy for lying in my mom's arm. I used to do that when sad.

Oh ya.. he is my lil brother. I like to hug him, even if he has grew up now, and he hates my hug. Haha. I don't care! I love it! Maybe it's cause he is the closest man whom stay in my life till now. He is pretty funny, caring, and honest.

I miss them.. :)

I miss my sister too... my father too..  but, my mom and my bro are more. Maybe because they are the only people that I used to meet at home.

Well, now i get my mood back by this writing. I am ready to fight my thes*s. Bye. :*

Read More

Monday, October 12, 2015

Semester 8

Ayo berikan sorak sorai karena akhirnya semester delapan saya telah berakhir!!!! Yeeeyyyy!!! (tepuk tangan super meriah)

Apa???

Lulus??

Mmm...Bentar.. Sepertinya jemuran eike belum diangkat.. (kabur)

Okey... jujur! itu pertanyaan yang sangat sensitif saat ini. Iya! Kalo kamu nanyain kapan aku lulus? Ah... rasanya aku pengen bacain puisi-nya Chairil Anwar yang "Aku" aja.

Aku...
Kalau sampai waktuku (lulus).
Ku mau tak seorang pun kan tahu..
Tidak juga kau!!!

Halah.. intinya begitulah.

Banyak temen-temenku heran. Kenapa aku belum lulus juga. Apalagi setelah mereka baca status-ku yang tanggal 28 Mei seperti berikut :



World, now I am officially free and still alive!! :DSebulan ini akhirnya seminar PKL, seminar proposal TA, GSA,...
Posted by Afifatul Mukaroh on Thursday, May 28, 2015




Mereka mengira sejak itu berarti aku sudah bisa menyelesaikan TA-ku. Anggaplah setelah itu ada bulan Juni, Juli, dan Agustus. TIGA BULAN!!!! harusnya semester 8 ini aku bisa selesai semuanya. Ah.. mereka salah kira. Terutama dosen pembimbingku. -_-

Kenapa aku belum bisa selesai juga?

Nah... ini yang mau ceritakan.

Well, semester delapan. Orang bilang ini semester akhir. Ya, memang! akhir! Maka dari itu semester akhir ini dimanfaatkan orang-orang untuk menyelesaikan TA-nya. Tapi bagiku.. Karena ini semester akhir, maka dari itu aku harus menyelesaikan bucket list-ku yang memang harus aku lakukan ketika aku masih berstatus mahasiswa. Iya!!! aku punya bucket list lain lagi nanti kalo sudah bukan mahasiswa. Jadi, mau nggak mau aku harus nge-check bucket list ini sekarang, atau tidak selamanya.

Ada orang bilang, "Saat kamu tua, yang kamu sesali itu bukan hal-hal yang sudah kamu lalukan, tapi justru hal-hal yang belum kamu lakukan." Maka dari itu, menurut aku... dari pada tidak selamanya, mending mundur selangkah, untuk ancang-ancang biar lompatan ke depannya langsung berkali lipat dari langkah orang lain. Ahahahah.

Mungkin pola pikirku aja yang terlalu nyentrik kali ya? Tapi aku yakin kok ada orang yang sepemikiran denganku, walau mungkin mereka tidak satu jurusan/kampus denganku dan jumlahnya mungkin sangat sedikit.

Lagi pula.. selama ini tidak merugikan siapapun, aku rasa tidak masalah. Sejak awal aku kuliah, aku tidak memakai uang orang tuaku. Well, lalu bagaimana dengan instansi yang memberiku beasiswa? Aku kan pernah nggak kuliah selama satu semester saat aku exchange dulu. Jadi, anggaplah semester delapan ini adalah semester tujuh bagiku ya? Hehe.

Ah.. Alibi mulu tulisanku ini. Baiklah langsung saja ke bagian "What I've achieved and haven't achieved at 8th semester" biar kayak postingan semestes-semester sebelumnya. Hehe.

Semester delapan ini bisa dibilang semester paling produktif (bagiku). Awalnya aku mengira bucket list-ku tidak akan ter-check semua mengingat minimnya waktu. Hehe. Tapi... let see my writing belows...

Semetser delapan aku ngambil 1 mata kuliah Information Retrival, yang alhamdulillah dapat A. Hehe. Aku ngambil PKL, yang alhamdulillah seminar juga dan dapat A. Aku ngambil TA1, yang alhamdulillah seminar proposal juga dan dapet A. berarti tinggal TA2 (atau skripsi) yang memang sudah aku canangkan bahwa itu akan aku selesaikan di semester 9 (Amin).

Ah.. kalau ngomongin akademik kayaknya udah bisa ditebak ya.

Baiklah ke hal lain.

Ada salah satu prokerku sebagai GSA yang akhirnya ngasih efek indah yang beruntun kayak domino ke hidup aku. Namanya Study Jam. Study Jam adalah kelompok belajar Android di Undip yang didukung penuh oleh Google (Atau worldwide GDG lebih tepatnya). Berkat itu, aku bisa pemrograman Android dan berjejaring dengan programer Android hebat lainnya. Dari study jam, aku akhirnya di-gratisi (AKU SUKA GRATISAN) ikut Udacity Course yang aslinya bisa 2 jutaan rupiah. Sampai akhirnya aku dapat sertifikat dari Udacity dan menelurkan sebuah aplikasi android. Oh ya... Aku dapet akun di Google Play juga yang harganya bisa sekitar 400 ribuan rupiah. Hehe.

Aplikasi yang aku telurkan (kayak ayam aja-_-) dari Study Jam itu, sebut saja namanya "WhatsOn" aku ikutkan ke StartUp Competition dan inilah hasilnya :


Ini namanya "gosok-gosok berhadiah".Setelah selesai sama final project-nya study jam yang "WhatsOn Undip", iseng-iseng...
Posted by Afifatul Mukaroh on Thursday, May 7, 2015


WhatsOn is also finally powered by BEM Undip (berkat temen aku si Ibnu. Thanks ya!), dan akhirnya anak-anak Undip pada booming nge-download aplikasi ini. Kalo kamu mau download, ini link-nya : https://play.google.com/store/apps/details?id=com.vhiefa.whatsonundip

Oh ya.. eike dan temen-temen KMI Undip sampai sempet siaran di radio Pro Alma Undip buat ngenalin WhatsOn ini lho. Sekarang WhatsOn udah release ke versi 2.3 dan udah 1000-5000 download-an. Ntar aku bikin post sendiri deh tentang proses berdirinya, proses perjalanannya, sampai kedepannya mau dibawa kemana si WhatsOn ini. Soalnya kalo diceritain di sini bakal panjang bangeeetttt...

Berkat Study Jam juga aku akhirnya bisa berjejaring dengan anak-anak DCS dan mungkin (uhuk) menjadi bagian di dalamnya (halah). Apa itu DCS? nanti aku bikin post sendiri. Iya!! total aku janjiin dua post. Catet!!! Kalo aku lupa.. tapi maklumin ya? Hehe.

Kemarin aku dan anak-anak DCS lebih tepatnya Eko, Adik, dan Faqih akhirnya lolos babak final Compfest di UI. Proyek kami adalah siaga banjir. Ini link-nya : https://play.google.com/store/apps/details?id=com.digitcreativestudio.siagabanjir

Banyak sebenernya yang mau aku ceritain tentang perjuangan di Compfest ini. Mulai dari Juli saat seleksi proposal;, bulan Agustus proses development (FYI,.. Saat development ini aku ngrasa udah kayak software engineer beneran lho. Kita bener-bener nerapin pelajaran RPL dimana kita kolaborasi ngoding jarak jauh dan semua terhubung hanya dengan github. Haha).. Bulan september detik-detik pengumuman final. Sampai akhirnya awal oktober kemarin kita final ke Jakarta. Kita nggak dapat juara sih.. Tapi banyak banget pelajaran dan experience yang aku pribadi dapet dari situ. Ah.. ntar aku bikin post tersendiri aja tentang pelajaran dan experience yang aku dapat itu. Oke! aku udah janjiin tiga postingan.

Sebagai bonus, ini ada foto pas di sana.




Iya.. aku cewek sendiri. Ditambah itu ada tim dari Undip lainnya juga (Special Topics team : Fajar, Ihsan, dan Cahaya) yang cowok semua. Jadinya aku makin kelihatan cewek sendiri. Tapi gpp. Aku udah biasa. Emang kok kalo acara-acara yang berhubungan dengan IT, cewek selalu jadi minoritas. GSA Semarang juga aku cewek sendiri (1 banding 5). Dulu waktu aku masih jadi MSP Jateng DIY juga ceweknya ibarat 1 banding 7. Oh ya.. belum lagi pas dulu aku sering ikut pelatihan-pelatihan di Ikitas, ceweknya 1 banding 15 deh. Kecuali acara-acara femaledev doang aku ngrasa cewek seutuhmya. hahaha.

Apa sih?? Kok jadi ngomongin gender gini. Oke balik ke topik. Selain semua hal produktif di atas. Di semester delapan itu juga akhirnya aku produktif dari segi keuangan (Asiikkk). Ini berkat PKL (atau magang) yang aku lakoni di suatu software house di Semarang. Mungkin karena bos suka etos kerjaku (halah), akhirnya aku diajak proyek lain lagi. Ini yang bener-bener menyita waktuku. Kegiatan yang lain juga menyita sih. Tapi bedanya, ini ga bisa dikompromi, karena ini aku punya bos dan aku dibayar. Proyek ini berlangsung mulai Juli dan baru saja berakhir akhir september kemarin, Jadi sampai sekarang gajiku belum keluar. Proyek-nya tentang apa? Ah.. ceritanya panjang. Haha.. Iya!! aku mau bilang bahwa ntar aku mau bikin post sendiri tentang ini. HAHAHAHA. (ini aku serius)

Sedikit bocoran aja. proyek ini klien-nya dari dinas sosial provinsi, Iya! dari pemerintahan/negeri. Selama proyek berlangsung, kita (tim), sampai survey ke kabupaten-kabupaten di provinsi jawa tengah. Untuk tim-ku dapat empat kabupaten. Kita juga sering rapat di kantor dinas sosial. yah.. yang namanya dari pemerintahan/negeri, setiap kegiatan pasti dapat honor. Jadi walaupun gaji resminya belum keluar alhamdulillah honor-nya bisa memenuhi kebutuhan hedonisme-ku. ahahha.. Kalau tanya total honor kegiatannya berapa? Hmmm.. kira-kira kalo buat beli Patrick baru dapat dua. Hahah. Jadi nggak sabar nunggu gaji sesungguhnya berapa? Duh.. kuatkan imanmu fah.. Jangan hedon lagi!!! Haha..

Ya sudah.. segitu saja cerita tentang semester delapanku. Banyak janjiin tulisan ya? Haha.. Ingetin aku kalo lupa nulis.  Byeeee!!!!!!!! :*
Read More

Saturday, September 26, 2015

Aku – Chairil Anwar

Aku
Chairil Anwar
Kalau sampai waktuku
‘Ku mau tak seorang kan merayu
Tidak juga kau
Tak perlu sedu sedan itu
Aku ini binatang jalang
Dari kumpulannya terbuang
Biar peluru menembus kulitku
Aku tetap meradang menerjang
Luka dan bisa kubawa berlari
Berlari
Hingga hilang pedih peri
Dan aku akan lebih tidak perduli
Aku mau hidup seribu tahun lagi
Read More

Sunday, September 6, 2015

Allah Selalu Mengabulkan Apa yang Aku Pinta

Pernah aku berpkir… jika dunia ini hanya mempunyai satu warna, misal saja “putih”. Mungkinkah kita mengenal hitam?

Jadi seperti ini..

Jika aku bertanya.. Apa kamu tahu bagaimana warna “rilo” itu? Apa? Kamu bahkan belum pernah mendengar kata “rilo”? Rilo? Kamu tidak tahu warna rilo?

Yah.. memang kata “rilo” itu tidak ada. Kenapa? Karena kita tidak dihadapkan dengan lawanan dari kata “rilo” tadi.

Maksudnya seperti ini. Kita mengenal kata “malam”, karena kita tahu ada kata “siang”. Kita mengenal kata “perempuan”, karena kita tahu ada kata “laki-laki”.

Bayangkan jika dunia ini selalu siang, apakah akan muncul kata “malam”? bahkan apakah kita tetap menyebutnya “siang”? Mungkinkah kita justru tak punya sebutan untuk “siang” karena memang dia tidak punya lawanan katanya?

Bayangkan jika semua orang adalah perempuan, apakah akan muncul kata “laki-laki”? bahkan apakah kita tetap menyebutnya “perempuan”? Mungkinkah kita justru tak punya sebutan untuk “perempuan” karena memang dia tidak punya lawanan katanya?

Ah… ngomong apa aku ini? Kenapa tidak sama dengan judul tulisanku ini…

Jadi begini… tulisan ini sebenarnya hanya untuk mengingatkanku saja..

Jujur… aku pernah gagal (bahkan sering).. tak perlu naïf. Kadang aku bertanya, “Ya Allah.. kenapa kau tak kabulkan doaku?”

Aku meminta Allah agar merasa bahagia, tapi aku mendapatkan sedih.
Aku meminta Allah agar merasa sehat, tapi aku mendapatkan sakit.
Aku meminta Allah agar merasa kenyang, tapi aku mendapatkan lapar.

Kemudian aku sadar.. Jika aku tidak merasa sedih, bagaimana aku bisa merasa bahagia? Jika aku tidak mendapat sakit, bagaimana aku merasakan sehat? Jika aku tidak merasa lapar, bagaimana aku bisa merasakan kenyang?

Sama halnya perumpaanku di atas.. Jika di dunia ini tidak ada malam, mungkinkah kita sadar keberadaan “siang”? Jika tidak ada laki-laki, mungkinkah kita sadar keberadaan “perempuan”?

Mungkin… jika aku tidak pernah merasakan sedih, tidak pernah merasakan sakit, tidak pernah merasakan lapar.. Aku tidak akan sadar keberadaaan bahagia, sehat, atau kenyang. Aku tidak akan tahu bagaimana rasanya, karena aku tidak merasakan lawanan katanya.

Yah.. mungkin begitulah cara Allah menjawab doaku. Ketika aku meminta bahagia, Allah memberikan aku kesedihan terlebih dulu, agar aku merasakan bagaimana bahagia itu. Ketika aku meminta sehat, Allah memberi aku sakit terlebih  dulu, agar aku merasakan bagaimana sehat itu. Ketika aku meminta kenyang, Allah memberi aku lapar terlebih dulu, agar aku merasakan bagaimana kenyang itu.

Maha besar Allah! Pada dasarnya Dia selalu mengabulkan doaku.  Aku hanya perlu melihat dari sudut pandang setelahnya.
Setelah aku sedih..
sedih itu hilang..
ada rasa lain muncul..
rasanya berbeda..
dan menenangkan..
Ini pasti “bahagia”..

Allah mengabulkan doaku. Aku benar-benar merasakan bagaimana bahagia itu.
Read More

Wednesday, July 15, 2015

PUBLIC SPEAKING EXPERIENCES

This is when I was being speaker at Scholarship Forum, a workshop by Student Executive Board of Science and Mathematic Faculty. There, I spoke about my experience as exchange student in Korea, the scholarship, and also some motivation.

More photos of it : https://www.facebook.com/Kesma.BEM.FSM.Undip/media_set?set=a.752155291531843.1073741827.100002121389003&type=3





This is when I was being speaker about scholarship abroad, held by Jawa Tengah Youth Forum.

More photos of it : https://www.facebook.com/profile.php?id=100008200539506&sk=photos&collection_token=100008200539506%3A2305272732%3A69&set=a.1477970275819643.1073741829.100008200539506&type=1










This is when I was being speaker at "It's all about Technology" workshop, held by Google Student Ambassador feat Computer Science Departement.

More photos of it : https://www.facebook.com/media/set/?set=a.809469402446402.1073741830.714737135252963&type=3







Read More

Monday, July 13, 2015

MOTIVATION

I have to be more successful than the people who already hurt me!
Read More

Friday, June 19, 2015

TUTORIAL MEMBUAT APLIKASI CRUD (CREATE, READ, UPDATE, DELETE) SEDERHANA DI ANDROID DENGAN DATABASE DI SERVER (PART 2)




Langkah 9

Sekarang kita lanjut untuk membuat kelas yang digunakan untuk mengupdate dan men-delete data mahasiswa. Idenya adalah ketika sebuah item mahasiswa dari list mahasiswa di-klik maka akan menuju activity untuk update/delete.

Kita buat dulu activity_updatedelete.xml, berikut isinya :

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

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/id_mhs"
        android:visibility="gone"/> <!--untuk membuat textview tidak tampil-->

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Nama"
        android:id="@+id/textView" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextNama" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="NIM"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextNim"
        android:layout_gravity="center_horizontal" />

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="horizontal"
        android:layout_weight="1"
        >

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Update"
            android:layout_weight="0.5"
            android:id="@+id/buttonUpdate"/>

        <Button
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:text="Delete"
            android:layout_weight="0.5"
            android:id="@+id/buttonDelete" />
    </LinearLayout>
</LinearLayout>

Selanjutnya, kita buat kelas boundary-nya yaitu UpdateDeleteActivity.java, kelas ini dibuat extends ActionBarActivity, dan jangan lupa kita definisikan juga setiap TextView, Button, maupun EditText-nya. Berikut kodingnya :

package com.vhiefa.simplecrud;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;

/**
 * Created by Afifatul on 6/18/2015.
 */
public class UpdateDeleteActivity extends ActionBarActivity {

    EditText EditTxtnama, EditTxtnim;
    TextView TxtViewId;
    Button UpdateBtn, DeleteBtn;


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

        EditTxtnama = (EditText) findViewById(R.id.editTextNama);
        EditTxtnim = (EditText) findViewById(R.id.editTextNim);
        TxtViewId = (TextView) findViewById(R.id.id_mhs);

        UpdateBtn = (Button) findViewById(R.id.buttonUpdate);
        DeleteBtn = (Button) findViewById(R.id.buttonDelete);

    }


}


Kita update AndroidManifest.xml agar kelas UpdateDeleteActivity bisa dipanggil di aplikasi android kita, tambahkan code berikut :

        <activity
            android:name="com.vhiefa.simplecrud.UpdateDeleteActivity"
            android:label="Detail Mahasiswa"
            android:parentActivityName="com.vhiefa.simplecrud.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vhiefa.simplecrud.MainActivity" />
        </activity>

Sehingga koding di AndroidManifest.xml secara keseluruhan menjadi sebagai berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vhiefa.simplecrud" >

    <uses-permission android:name="android.permission.INTERNET" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.vhiefa.simplecrud.UpdateDeleteActivity"
            android:label="Detail Mahasiswa"
            android:parentActivityName="com.vhiefa.simplecrud.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vhiefa.simplecrud.MainActivity" />
        </activity>
    </application>

</manifest>


Langkah 10

Kita update lagi koding di MainActivity.java, karena kita akan membuat agar list item mahasiswa ketika di-klik bisa menuju activity update/delete. Kita juga akan membuat id,nama, dan nim mahasiswa ter-parsing ke kelas UpdateDeleteActivity. Tambahkan koding berikut di dalam method onCreate :

        list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int urutan, long id) {
                //dapatkan data id, nama, nim mahasiswa dan simpan dalam variable string
                String idmhs = ((TextView) view.findViewById(R.id.id_mhs)).getText().toString();
                String nama = ((TextView) view.findViewById(R.id.nama_mhs)).getText().toString();
                String nim = ((TextView) view.findViewById(R.id.nim_mhs)).getText().toString();

                //varible string tadi kita simpan dalam suatu Bundle, dan kita parse bundle tersebut bersama intent menuju kelas UpdateDeleteActivity
                Intent i = null;
                i = new Intent(MainActivity.this, UpdateDeleteActivity.class);
                Bundle b = new Bundle();
                b.putString("id_mhs", idmhs);
                b.putString("nama_mhs", nama);
                b.putString("nim_mhs", nim);
                i.putExtras(b);
                startActivity(i);
            }
        });

Sehingga seluruh koding di MainActivity.java menjadi :

package com.vhiefa.simplecrud;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends ActionBarActivity {

    ListView list;

    JSONParser jParser = new JSONParser();
    ArrayList<Mahasiswa> daftar_mhs = new ArrayList<Mahasiswa>();
    JSONArray daftarMhs = null;
    String url_read_mhs = "http://api.vhiefa.net76.net/simple_crud/read_mhs.php";
    // JSON Node names, ini harus sesuai yang di API
    public static final String TAG_SUCCESS = "success";
    public static final String TAG_MHS = "mahasiswa";
    public static final String TAG_ID_MHS = "id_mhs";
    public static final String TAG_NAMA_MHS = "nama";
    public static final String TAG_NIM_MHS = "nim";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list = (ListView) findViewById(R.id.listview_mhs);

        //jalankan ReadMhsTask
        ReadMhsTask m= (ReadMhsTask) new ReadMhsTask().execute();

        list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int urutan, long id) {
                //dapatkan data id, nama, nim mahasiswa dan simpan dalam variable string
                String idmhs = ((TextView) view.findViewById(R.id.id_mhs)).getText().toString();
                String nama = ((TextView) view.findViewById(R.id.nama_mhs)).getText().toString();
                String nim = ((TextView) view.findViewById(R.id.nim_mhs)).getText().toString();

                //varible string tadi kita simpan dalam suatu Bundle, dan kita parse bundle tersebut bersama intent menuju kelas UpdateDeleteActivity
                Intent i = null;
                i = new Intent(MainActivity.this, UpdateDeleteActivity.class);
                Bundle b = new Bundle();
                b.putString("id_mhs", idmhs);
                b.putString("nama_mhs", nama);
                b.putString("nim_mhs", nim);
                i.putExtras(b);
                startActivity(i);
            }
        });
    }


    class ReadMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {
            String returnResult = getMhsList(); //memanggil method getMhsList()
            return returnResult;

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            pDialog.dismiss();
            if(result.equalsIgnoreCase("Exception Caught"))
            {
                Toast.makeText(MainActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("no results"))
            {
                Toast.makeText(MainActivity.this, "Data empty", Toast.LENGTH_LONG).show();
            }
            else
            {
                list.setAdapter(new MahasiswaAdapter(MainActivity.this,daftar_mhs)); //Adapter menampilkan data mahasiswa ke dalam listView
            }
        }


        //method untuk memperoleh daftar mahasiswa dari JSON
        public String getMhsList()
        {
            Mahasiswa tempMhs = new Mahasiswa();
            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            try {
                JSONObject json = jParser.makeHttpRequest(url_read_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) { //Ada record Data (SUCCESS = 1)
                    //Getting Array of daftar_mhs
                    daftarMhs = json.getJSONArray(TAG_MHS);
                    // looping through All daftar_mhs
                    for (int i = 0; i < daftarMhs.length() ; i++){
                        JSONObject c = daftarMhs.getJSONObject(i);
                        tempMhs = new Mahasiswa();
                        tempMhs.setMhsId(c.getString(TAG_ID_MHS));
                        tempMhs.setMhsName(c.getString(TAG_NAMA_MHS));
                        tempMhs.setMhsNIM(c.getString(TAG_NIM_MHS));
                        daftar_mhs.add(tempMhs);
                    }
                    return "OK";
                }
                else {
                    //Tidak Ada Record Data (SUCCESS = 0)
                    return "no results";
                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }
        }

    }
}


Langkah 11

Selanjutnya kita buka lagi UpdateDeleteActivity.java dan kita masukan kode yang menangkap bundle yang telah di-parsing dari kelas MainActivity tadi. Masukan code berikut :

        //menangkap bundle yang telah di-parsed dari MainActivity
        Bundle b = getIntent().getExtras();
        String isi_id_mhs = b.getString("id_mhs");
        String isi_nama_mhs= b.getString("nama_mhs");
        String isi_nim_mhs= b.getString("nim_mhs");
        //meng-set bundle tersebut
        EditTxtnama.setText(isi_nama_mhs);
        EditTxtnim.setText(isi_nim_mhs);
        TxtViewId.setText(isi_id_mhs);
Langkah 12

Kita buat AsyncTask di UpdateDeleteActivity untuk update data mahasiswa, kita beri nama UpdateMhsTask. Berikut kodingnya :

    class UpdateMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(UpdateDeleteActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {

            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            parameter.add(new BasicNameValuePair(TAG_ID_MHS, idStr));
            parameter.add(new BasicNameValuePair(TAG_NAMA_MHS, namaStr));
            parameter.add(new BasicNameValuePair(TAG_NIM_MHS, nimStr));

            try {
                JSONObject json = jParser.makeHttpRequest(url_update_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {

                    return "OK";
                }
                else {

                    return "FAIL";

                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }

        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            pDialog.dismiss();

            if(result.equalsIgnoreCase("Exception Caught"))
            {

                Toast.makeText(UpdateDeleteActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("FAIL"))
            {
                Toast.makeText(UpdateDeleteActivity.this, "Fail.. Try Again", Toast.LENGTH_LONG).show();
            }

            else {
                Intent i = null;
                i = new Intent(UpdateDeleteActivity.this, MainActivity.class);
                startActivity(i);
            }

        }
    }
Langkah 13 

Kita buat AsyncTask di UpdateDeleteActivity untuk delete data mahasiswa, kita beri nama DeleteMhsTask. Berikut kodingnya :

 class DeleteMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(UpdateDeleteActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {

            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            parameter.add(new BasicNameValuePair(TAG_ID_MHS, idStr));

            try {
                JSONObject json = jParser.makeHttpRequest(url_delete_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {

                    return "OK";
                }
                else {

                    return "FAIL";

                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }

        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            pDialog.dismiss();

            if(result.equalsIgnoreCase("Exception Caught"))
            {

                Toast.makeText(UpdateDeleteActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("FAIL"))
            {
                Toast.makeText(UpdateDeleteActivity.this, "Fail.. Try Again", Toast.LENGTH_LONG).show();
            }

            else {
                Intent i = null;
                i = new Intent(UpdateDeleteActivity.this, MainActivity.class);
                startActivity(i);
            }

        }
    }
Langkah 14

Kita buat agar button update dan button delete pada UpdateDeleteActivity bisa berfungsi sebagaimana mestinya. Tambahkan koding berikut :

        UpdateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                idStr = TxtViewId.getText().toString();
                namaStr = EditTxtnama.getText().toString();
                nimStr = EditTxtnim.getText().toString();
                new UpdateMhsTask().execute();
            }
        });

        DeleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                idStr = TxtViewId.getText().toString();
                new DeleteMhsTask().execute();
            }
        });
Sehingga secara keseluruhan isi UpdateDeleteActivity.java adalah sebagai berikut :

package com.vhiefa.simplecrud;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Afifatul on 6/18/2015.
 */
public class UpdateDeleteActivity extends ActionBarActivity {

    JSONParser jParser = new JSONParser();
    String url_update_mhs= "http://api.vhiefa.net76.net/simple_crud/update_mhs.php";
    String url_delete_mhs= "http://api.vhiefa.net76.net/simple_crud/delete_mhs.php";
    // JSON Node names, ini harus sesuai yang di API
    public static final String TAG_SUCCESS = "success";
    public static final String TAG_ID_MHS = "id_mhs";
    public static final String TAG_NAMA_MHS = "nama";
    public static final String TAG_NIM_MHS = "nim";

    EditText EditTxtnama, EditTxtnim;
    TextView TxtViewId;
    Button UpdateBtn, DeleteBtn;
    String namaStr, nimStr, idStr;

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

        EditTxtnama = (EditText) findViewById(R.id.editTextNama);
        EditTxtnim = (EditText) findViewById(R.id.editTextNim);
        TxtViewId = (TextView) findViewById(R.id.id_mhs);

        UpdateBtn = (Button) findViewById(R.id.buttonUpdate);
        DeleteBtn = (Button) findViewById(R.id.buttonDelete);

        //menangkap bundle yang telah di-parsed dari MainActivity
        Bundle b = getIntent().getExtras();
        String isi_id_mhs = b.getString("id_mhs");
        String isi_nama_mhs= b.getString("nama_mhs");
        String isi_nim_mhs= b.getString("nim_mhs");
        //meng-set bundle tersebut
        EditTxtnama.setText(isi_nama_mhs);
        EditTxtnim.setText(isi_nim_mhs);
        TxtViewId.setText(isi_id_mhs);

        UpdateBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                idStr = TxtViewId.getText().toString();
                namaStr = EditTxtnama.getText().toString();
                nimStr = EditTxtnim.getText().toString();
                new UpdateMhsTask().execute();
            }
        });

        DeleteBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                idStr = TxtViewId.getText().toString();
                new DeleteMhsTask().execute();
            }
        });
    }

    class UpdateMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(UpdateDeleteActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {

            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            parameter.add(new BasicNameValuePair(TAG_ID_MHS, idStr));
            parameter.add(new BasicNameValuePair(TAG_NAMA_MHS, namaStr));
            parameter.add(new BasicNameValuePair(TAG_NIM_MHS, nimStr));

            try {
                JSONObject json = jParser.makeHttpRequest(url_update_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {

                    return "OK";
                }
                else {

                    return "FAIL";

                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }

        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            pDialog.dismiss();

            if(result.equalsIgnoreCase("Exception Caught"))
            {

                Toast.makeText(UpdateDeleteActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("FAIL"))
            {
                Toast.makeText(UpdateDeleteActivity.this, "Fail.. Try Again", Toast.LENGTH_LONG).show();
            }

            else {
                Intent i = null;
                i = new Intent(UpdateDeleteActivity.this, MainActivity.class);
                startActivity(i);
            }

        }
    }


    class DeleteMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(UpdateDeleteActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {

            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            parameter.add(new BasicNameValuePair(TAG_ID_MHS, idStr));

            try {
                JSONObject json = jParser.makeHttpRequest(url_delete_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) {

                    return "OK";
                }
                else {

                    return "FAIL";

                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }

        }

        @Override
        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            pDialog.dismiss();

            if(result.equalsIgnoreCase("Exception Caught"))
            {

                Toast.makeText(UpdateDeleteActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("FAIL"))
            {
                Toast.makeText(UpdateDeleteActivity.this, "Fail.. Try Again", Toast.LENGTH_LONG).show();
            }

            else {
                Intent i = null;
                i = new Intent(UpdateDeleteActivity.this, MainActivity.class);
                startActivity(i);
            }

        }
    }
}


Selesai… Kita bisa jalankan aplikasi kita dan update dan delete juga bisa dilakukan.


Langkah 15

Sekarang kita lanjut agar aplikasi kita bisa menambah data mahasiswa ke database. Kita buat dulu activity_create.xml, berikut isinya :
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical" android:layout_width="match_parent"
    android:padding="10dp"
    android:layout_height="match_parent">

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Nama"
        android:id="@+id/textView" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextNama" />

    <TextView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="NIM"
        android:id="@+id/textView2"
        android:layout_gravity="center_horizontal" />

    <EditText
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/editTextNim"
        android:layout_gravity="center_horizontal" />

    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="Add"
        android:id="@+id/buttonAdd"
        android:layout_gravity="center_horizontal" />
</LinearLayout>
Selanjutnya, kita buat kelas boundary-nya yaitu CreateActivity.java, kelas ini dibuat extends ActionBarActivity, dan jangan lupa kita definisikan juga setiap TextView, Button, maupun EditText-nya. Berikut kodingnya :

package com.vhiefa.simplecrud;

import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;


/**
 * Created by Afifatul on 6/18/2015.
 */
public class CreateActivity extends ActionBarActivity{


    EditText EditTxtnama, EditTxtnim;
    Button addBtn;
    String namaStr, nimStr;

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

        EditTxtnama = (EditText) findViewById(R.id.editTextNama);
        EditTxtnim = (EditText) findViewById(R.id.editTextNim);
        addBtn = (Button) findViewById(R.id.buttonAdd);


    }

}
Kita update AndroidManifest.xml agar kelas CreateActivity bisa dipanggil di aplikasi android kita, tambahkan code berikut :

        <activity
            android:name="com.vhiefa.simplecrud.CreateActivity"
            android:label="Tambah Mahasiswa"
            android:parentActivityName="com.vhiefa.simplecrud.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vhiefa.simplecrud.MainActivity" />
        </activity>

Sehingga koding di AndroidManifest.xml secara keseluruhan menjadi sebagai berikut :

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.vhiefa.simplecrud" >

    <uses-permission android:name="android.permission.INTERNET" />

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

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <activity
            android:name="com.vhiefa.simplecrud.CreateActivity"
            android:label="Tambah Mahasiswa"
            android:parentActivityName="com.vhiefa.simplecrud.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vhiefa.simplecrud.MainActivity" />
        </activity>
        <activity
            android:name="com.vhiefa.simplecrud.UpdateDeleteActivity"
            android:label="Detail Mahasiswa"
            android:parentActivityName="com.vhiefa.simplecrud.MainActivity" >
            <meta-data
                android:name="android.support.PARENT_ACTIVITY"
                android:value="com.vhiefa.simplecrud.MainActivity" />
        </activity>
    </application>

</manifest>

Langkah 16

Kita buat agar di activity utama (MainActivity) dapat menampilkan tombol Add di pojok kanan action bar. Caranya kita update dulu main_menu.xml yang berada pada direktori menu. Berikut kodingnya :
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" tools:context=".MainActivity">

    <item android:id="@+id/action_add" android:title="Add"
        android:orderInCategory="100" app:showAsAction="always" />
</menu>

Kemudian kita tambahkan kode berikut pada MainActivity.java
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();


        if (id == R.id.action_add) {
            Intent i = new Intent(MainActivity.this, CreateActivity.class);
            startActivity(i);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }
Sehingga secara keseluruhan isi MainActivity.java menjadi sebagai berikut :
package com.vhiefa.simplecrud;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import org.apache.http.NameValuePair;
import org.json.JSONArray;
import org.json.JSONObject;
import java.util.ArrayList;
import java.util.List;


public class MainActivity extends ActionBarActivity {

    ListView list;

    JSONParser jParser = new JSONParser();
    ArrayList<Mahasiswa> daftar_mhs = new ArrayList<Mahasiswa>();
    JSONArray daftarMhs = null;
    String url_read_mhs = "http://api.vhiefa.net76.net/simple_crud/read_mhs.php";
    // JSON Node names, ini harus sesuai yang di API
    public static final String TAG_SUCCESS = "success";
    public static final String TAG_MHS = "mahasiswa";
    public static final String TAG_ID_MHS = "id_mhs";
    public static final String TAG_NAMA_MHS = "nama";
    public static final String TAG_NIM_MHS = "nim";

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        list = (ListView) findViewById(R.id.listview_mhs);

        //jalankan ReadMhsTask
        ReadMhsTask m= (ReadMhsTask) new ReadMhsTask().execute();

        list.setOnItemClickListener(new AdapterView.OnItemClickListener(){
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int urutan, long id) {
                //dapatkan data id, nama, nim mahasiswa dan simpan dalam variable string
                String idmhs = ((TextView) view.findViewById(R.id.id_mhs)).getText().toString();
                String nama = ((TextView) view.findViewById(R.id.nama_mhs)).getText().toString();
                String nim = ((TextView) view.findViewById(R.id.nim_mhs)).getText().toString();

                //varible string tadi kita simpan dalam suatu Bundle, dan kita parse bundle tersebut bersama intent menuju kelas UpdateDeleteActivity
                Intent i = null;
                i = new Intent(MainActivity.this, UpdateDeleteActivity.class);
                Bundle b = new Bundle();
                b.putString("id_mhs", idmhs);
                b.putString("nama_mhs", nama);
                b.putString("nim_mhs", nim);
                i.putExtras(b);
                startActivity(i);
            }
        });
    }


    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.menu_main, menu);
        return true;
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle action bar item clicks here. The action bar will
        // automatically handle clicks on the Home/Up button, so long
        // as you specify a parent activity in AndroidManifest.xml.
        int id = item.getItemId();


        if (id == R.id.action_add) {
            Intent i = new Intent(MainActivity.this, CreateActivity.class);
            startActivity(i);
            return true;
        }

        return super.onOptionsItemSelected(item);
    }


    class ReadMhsTask extends AsyncTask<String, Void, String>
    {
        ProgressDialog pDialog;

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            pDialog = new ProgressDialog(MainActivity.this);
            pDialog.setMessage("Mohon Tunggu..");
            pDialog.setIndeterminate(true);
            pDialog.setCancelable(true);
            pDialog.show();
        }

        @Override
        protected String doInBackground(String... sText) {
            String returnResult = getMhsList(); //memanggil method getMhsList()
            return returnResult;

        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            pDialog.dismiss();
            if(result.equalsIgnoreCase("Exception Caught"))
            {
                Toast.makeText(MainActivity.this, "Unable to connect to server,please check your internet connection!", Toast.LENGTH_LONG).show();
            }

            if(result.equalsIgnoreCase("no results"))
            {
                Toast.makeText(MainActivity.this, "Data empty", Toast.LENGTH_LONG).show();
            }
            else
            {
                list.setAdapter(new MahasiswaAdapter(MainActivity.this,daftar_mhs)); //Adapter menampilkan data mahasiswa ke dalam listView
            }
        }


        //method untuk memperoleh daftar mahasiswa dari JSON
        public String getMhsList()
        {
            Mahasiswa tempMhs = new Mahasiswa();
            List<NameValuePair> parameter = new ArrayList<NameValuePair>();
            try {
                JSONObject json = jParser.makeHttpRequest(url_read_mhs,"POST", parameter);

                int success = json.getInt(TAG_SUCCESS);
                if (success == 1) { //Ada record Data (SUCCESS = 1)
                    //Getting Array of daftar_mhs
                    daftarMhs = json.getJSONArray(TAG_MHS);
                    // looping through All daftar_mhs
                    for (int i = 0; i < daftarMhs.length() ; i++){
                        JSONObject c = daftarMhs.getJSONObject(i);
                        tempMhs = new Mahasiswa();
                        tempMhs.setMhsId(c.getString(TAG_ID_MHS));
                        tempMhs.setMhsName(c.getString(TAG_NAMA_MHS));
                        tempMhs.setMhsNIM(c.getString(TAG_NIM_MHS));
                        daftar_mhs.add(tempMhs);
                    }
                    return "OK";
                }
                else {
                    //Tidak Ada Record Data (SUCCESS = 0)
                    return "no results";
                }

            } catch (Exception e) {
                e.printStackTrace();
                return "Exception Caught";
            }
        }

    }
}


Langkah 17

Sekarang kita buat AsyncTask di dalam CreateActivity.java untuk menambah data mahasiswa yang bernama CreateMhsTask, berikut kodingnya :

    class CreateMhsTask extends AsyncTask<String, String, String> {
        ProgressDialog dialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog = new ProgressDialog(CreateActivity.this);
            dialog.setMessage("Tambah Mahasiswa...");
            dialog.setIndeterminate(false);
            dialog.setCancelable(false);
            dialog.show();
        }

        protected String doInBackground(String... args) {

                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();

                params.add(new BasicNameValuePair(TAG_NAMA_MHS, namaStr));
                params.add(new BasicNameValuePair(TAG_NIM_MHS, nimStr));

                // getting JSON Object
                // Note that create Post url accepts POST method
                JSONObject json = jsonParser.makeHttpRequest(url_create_mhs, "POST", params);

                // check for success tag
                try {
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        // closing this screen
                        finish();
                    } else {
                        return "gagal_database";
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    return "gagal_koneksi_or_exception";
                }

            return "sukses";

        }


        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            if (result.equalsIgnoreCase("gagal_database")){
                dialog.dismiss();
                Toast.makeText(CreateActivity.this, "Terjadi masalah! Silahkan cek koneksi Anda!", Toast.LENGTH_SHORT).show();
            }
            else if (result.equalsIgnoreCase("gagal_koneksi_or_exception")){
                dialog.dismiss();
                Toast.makeText(CreateActivity.this, "Terjadi masalah! Silahkan cek koneksi Anda!",  Toast.LENGTH_SHORT).show();

            }
            else if (result.equalsIgnoreCase("sukses")){
                dialog.dismiss();
                Intent i = null;
                i = new Intent(CreateActivity.this, MainActivity.class);
                startActivity(i);
            }
        }
    }
Langkah 18

Kita buat agar ketika button add pada CreateActivity bisa berfungsi sebagaimana mestinya. Tambahkan kode berikut :
        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                namaStr = EditTxtnama.getText().toString();
                nimStr = EditTxtnim.getText().toString();
                new CreateMhsTask().execute();
            }
        });
Sehingga isi CreateActivity.java secara keseluruhan adalah sebagai berikut :
package com.vhiefa.simplecrud;

import android.app.ProgressDialog;
import android.content.Intent;
import android.os.AsyncTask;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.Toast;

import org.apache.http.NameValuePair;
import org.apache.http.message.BasicNameValuePair;
import org.json.JSONException;
import org.json.JSONObject;

import java.util.ArrayList;
import java.util.List;

/**
 * Created by Afifatul on 6/18/2015.
 */
public class CreateActivity extends ActionBarActivity{

    JSONParser jsonParser = new JSONParser();
    String url_create_mhs= "http://api.vhiefa.net76.net/simple_crud/create_mhs.php";
    // JSON Node names, ini harus sesuai yang di API
    public static final String TAG_SUCCESS = "success";
    public static final String TAG_NAMA_MHS = "nama";
    public static final String TAG_NIM_MHS = "nim";

    EditText EditTxtnama, EditTxtnim;
    Button addBtn;
    String namaStr, nimStr;

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

        EditTxtnama = (EditText) findViewById(R.id.editTextNama);
        EditTxtnim = (EditText) findViewById(R.id.editTextNim);
        addBtn = (Button) findViewById(R.id.buttonAdd);


        addBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                namaStr = EditTxtnama.getText().toString();
                nimStr = EditTxtnim.getText().toString();
                new CreateMhsTask().execute();
            }
        });
    }


    class CreateMhsTask extends AsyncTask<String, String, String> {
        ProgressDialog dialog;
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            dialog = new ProgressDialog(CreateActivity.this);
            dialog.setMessage("Tambah Mahasiswa...");
            dialog.setIndeterminate(false);
            dialog.setCancelable(false);
            dialog.show();
        }

        protected String doInBackground(String... args) {

                // Building Parameters
                List<NameValuePair> params = new ArrayList<NameValuePair>();

                params.add(new BasicNameValuePair(TAG_NAMA_MHS, namaStr));
                params.add(new BasicNameValuePair(TAG_NIM_MHS, nimStr));

                // getting JSON Object
                // Note that create Post url accepts POST method
                JSONObject json = jsonParser.makeHttpRequest(url_create_mhs, "POST", params);

                // check for success tag
                try {
                    int success = json.getInt(TAG_SUCCESS);

                    if (success == 1) {
                        // closing this screen
                        finish();
                    } else {
                        return "gagal_database";
                    }
                } catch (JSONException e) {
                    e.printStackTrace();
                    return "gagal_koneksi_or_exception";
                }

            return "sukses";

        }


        protected void onPostExecute(String result) {

            super.onPostExecute(result);
            if (result.equalsIgnoreCase("gagal_database")){
                dialog.dismiss();
                Toast.makeText(CreateActivity.this, "Terjadi masalah! Silahkan cek koneksi Anda!", Toast.LENGTH_SHORT).show();
            }
            else if (result.equalsIgnoreCase("gagal_koneksi_or_exception")){
                dialog.dismiss();
                Toast.makeText(CreateActivity.this, "Terjadi masalah! Silahkan cek koneksi Anda!",  Toast.LENGTH_SHORT).show();

            }
            else if (result.equalsIgnoreCase("sukses")){
                dialog.dismiss();
                Intent i = null;
                i = new Intent(CreateActivity.this, MainActivity.class);
                startActivity(i);
            }
        }
    }
}

Selesai!!! Sekarang aplikasi kita bisa dijalankan. 

Code lengkap dan apk-nya bisa didownload  DI SINI

Sekian terimakasih.. I know that I am not that expert, but I just wanna share a little thing that I know. Correct me if I’m wrong. Cheers!

Kalo ada yang kurang jelas atau mau bertanya, langsung saja tinggalkan komentar :)
Read More

Social Profiles

Twitter Facebook Google Plus LinkedIn RSS Feed Email Pinterest

My picture

I want to live my life to the absolute fullest, to open my eyes to be all i can be, to travel roads not taken, to meet faces unknown, to feel the wind, to touch the star
I promise to discover myself, to stand tall with greatness, to chase down and catch every dream
LIFE IS AN ADVENTURE

Popular Posts

Google+ Followers

Follow by Email

Total Pageviews

Instagram

Instagram

Follow Me

Copyright © Vhiefa | Powered by Blogger
Design by Lizard Themes | Blogger Theme by Lasantha - PremiumBloggerTemplates.com