BAB 8
APLIKASI PEMESANAN TIKET BERBASIS ANDROID Pada bab ini kita akan mencoba membuat sebuah aplikasi utuh dengan bantuan web service dengan format JSON, aplikasi yang kita akan buat adalah pemesanan tiket bus. Aplikasi ini akan kita bangun dari sisi server dan dari sisi client. ari sisi server akan kita gunakan bahasa pemrograman P!P untuk mana"emen aplikasi dari sisi admin, seperti pengolahan data kota asal dan tu"uan, data member, data pen"adwalan , data pemesanan sampai dengan pelaporan, serta "uga untuk menghasilkan file#file berformat JSON yang nantinya akan digunakan dari sisi client lewat bahasa pemrograman android. $alu dari sisi client yang akan dibangun lewat android, akan dibahas pembuatan splash screen, login dan register, pembuatan dashboard menu, sampai dengan fungsi# fungsi pemesanan dari member login, pencarian "adwal, memesan tiket, pembatalan sampai dengan mencetak bukti pemesanan dengan format P%.
8.1 Pembuatan Database dan Tabel Seperti pada bab sebelumnya, tentu kita akan membuat lagi satu database yang akan men"adi basis data aplikasi pemesanan tiket bus kita. atabasenya akan kita namakan dengan &pemesanan' dengan "umlah tabel yang akan dibuat adalah sebanyak ( tabel, yaitu tabel &admins', &member', &kota)asal', &kota)tu"uan', &"adwal', dan &pesan'. *erikut ini adalah struktur tabel#tabelnya + A.
Tabel admins
abel ini berfungsi untuk menyimpan data administrator, dalam mengelola keseluruhan fungsi dari aplikasi server pemesanan.
-ambar ./. Struktur tabel admins B. Tabel member
abel ini berfungsi menyimpan data member yang telah mendaftarkan dirinya dari sisi client0aplikasi android.
-ambar .1. Struktur tabel member C. Tabel kota_asal
abel ini berfungsi untuk menyimpan data kota asal atau data kota keberangkatan bus.
-ambar .2. Struktur tabel kota)asal D. Tabel kota_tujuan
abel ini berfungsi untuk menyimpan data kota tu"uan bus.
-ambar .3. Struktur tabel kota)tu"uan
E. Tabel jadwal
abel ini berfungsi untuk menyimpan data pen"adwalan keberangkatan bus yang dibuat oleh administrator.
-ambar .4. Struktur tabel "adwal F. Tabel pesan
abel ini berfungsi unuk menyimpan data pemesanan yang dipesan oleh para member lewat aplikasi android nantinya.
-ambar .(. Struktur tabel pesan
8.2 Pembuatan Aplikasi Server dengan PHP Pada pembuatan aplikasi pemesanan dari sisi server atau P!P penulis tidak membahas pembuatannya, karena buku ini secara khusus lebih fokus pada pemrograman android dan 5eb Service JSONnya, namun aplikasi beerta databasenya bisa langsung didownload pada link yang telah diberikan di awal buku ini. *erikut penulis tampilkan tampilan dari aplikasi pemesanan tiket bus di sisi server dengan pemrograman P!P.
-ambar .6. ampilan Aplikasi login server 7P!P8
-ambar .. ampilan 9enu ashboard Server 7P!P8
-ambar .:. ampilan 9enu ropdown 9aster 7P!P8
-ambar ./;. ampilan !alaman
-ambar .//. ampilan !alaman
-ambar ./1. ampilan !alaman ata 9ember 7P!P8
-ambar ./2. ampilan 9enu ransaksi 7P!P8
-ambar ./3. ampilan !alaman Jadwal 7P!P8
-ambar ./4. ampilan !alaman ata Pemesanan 7P!P8
-ambar ./(. ampilan !alaman $aporan 7P!P8
-ambar ./6. ampilan 9enu =tility 7P!P8
-ambar ./. ampilan halaman ganti password admin 7P!P8
8.3 Pembuatan File-File Webservice dengan PHP Pada sub bab ini mari kita buat file#file P!P yang akan menghasilkan format JSON dan akan kita gunakan pada aplikasi android kita nanti. otal ada /4 file yang akan kita buat pada bab ini. =ntuk peletakkan file#file ini "uga akan kita tempatkan di folder htdocs kita dan kita namakan foldernya dengan nama &android_tiket'. koneksi.php
>?php 00koneksi ke database @dbhost BlocalhostBC @dbuser BrootBC @dbpass BBC @dbname BpemesananBC mysDl)connect7@dbhost,@dbuser,@dbpass8C mysDl)select)db7@dbname8C ?E %ile ini bertu"uan untuk mengkoneksikan database pemesanan yang telah kita buat diawal tadi.
login.php
>?php reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @response array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGusernameGH8 II isset7@)POSFGpasswordGH88
@username @)POSFGusernameGHC @password @)POSFGpasswordGHC
00 Duery update berdasarkan id @result mysDl)Duery7BSK$KL M %O9 member 5!KK username G@usernameG AN password G@passwordGB8C
if 7empty7@result88 if 7mysDl)num)rows7@result8 E ;8 00 "ika sukses login @responseFBsuccessBH /C @responseFBmessageBH B$ogin *erhasil.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C if 7mysDl)num)rows7@result8 ;8 00 gagal update data @responseFBsuccessBH ;C @responseFBmessageBH B-agal login, username atau password salah atau belum terisi.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C
?E %ile ini bertugas untuk memvalidasi inputan username dan password member pada saat mereka login di aplikasi android.
register.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @response array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7empty7@)POSFGusernameGH8 QQ empty7@)POSFGpasswordGH8 QQ empty7@)POSFGnamaGH8 QQ empty7@)POSFGalamatGH8 QQ empty7@)POSFGtelponGH8 QQ empty7@)POSFG"enkelGH88 00 "ika data tidak terisi0tidak terset @responseFBsuccessBH ;C @responseFBmessageBH BPastikan semua data terisiBC
00 memprint0mencetak JSON respon echo "son)encode7@response8C else
@nama @)POSFGnamaGHC @alamat @)POSFGalamatGHC @"enkel @)POSFG"enkelGHC @telpon @)POSFGtelponGHC @username @)POSFGusernameGHC @password @)POSFGpasswordGHC
@cek)emailmysDl)Duery7BSK$KL M %O9 member 5!KK username G@usernameGB8C if 7mysDl)num)rows7@cek)email8 E ;8 @responseFBsuccessBH ;C @responseFBmessageBH BKmail sudah pernah terdaftar.BC echo "son)encode7@response8C if 7mysDl)num)rows7@cek)email8 ;8 00 Duery menambah data member @result mysDl)Duery7BRNSK RNO member7nama, alamat, telpon, "enkel, username, password8 A$=KS7G@namaG, G@alamatG,G@"enkelG, G@telponG, G@usernameG, G@passwordG8B8C 00 cek apakah Duery berhasil menambah data if 7@result8
00 "ika berhasil menambah data ke mysDl @responseFBsuccessBH /C @responseFBmessageBH B*erhasil menambah data member.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C else 00 gagal menambah data member @responseFBsuccessBH ;C @responseFBmessageBH B-agal menambah data.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C ?E %ile ini betugas untuk mengirimkan data registrasi member dari inputan di aplikasi android.
kota_asal.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C 0000000000000000 Script
00 9ysDl select Duery @result mysDl)Duery7BSK$KL M %O9 kota)asalB8C
while7@row mysDl)fetch)array7@result88 00 temporary array to create asal
@tmp array78C @tmpFBidBH @rowFBidBHC @tmpFBkotaBH @rowFBkotaBHC
00 push category to final "son array array)push7@responseFBasalBH, @tmp8C
00 keeping response header to "son header7GLontent#ype+ application0"sonG8C
00 echoing "son result echo "son)encode7@response8C
?E %ile ini bertugas untuk memparsing data kota asal dari tabel untuk digunakan ke spiner di aplikasi android. kota_tujuan.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C 000000000000000 Script
00 9ysDl select Duery @result mysDl)Duery7BSK$KL M %O9 kota)tu"uanB8C
while7@row mysDl)fetch)array7@result88 00 temporary array to create tu"uan @tmp array78C
@tmpFBidBH @rowFBidBHC @tmpFBkotaBH @rowFBkotaBHC
00 push category to final "son array array)push7@responseFBtu"uanBH, @tmp8C 00 keeping response header to "son header7GLontent#ype+ application0"sonG8C
00 echoing "son result echo "son)encode7@response8C
?E %ile ini bertugas untuk memparsing data kota tu"uan dari tabel untuk digunakan ke spiner di aplikasi android.
cari_jadwal.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGid)asalGH8 II isset7@)POSFGid)tu"uanGH88 @asal @)POSFGid)asalGHC @tu"uan @)POSFGid)tu"uanGHC @tanggal @)POSFGtanggalGHC
00 Duery ambil data member berdasarkan id @result
mysDl)Duery7BSK$KL
M
%O9
"adwal
5!KK
kota)tu"uanG@tu"uanG and tanggal)berangkatG@tanggalGB8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 @result mysDl)fetch)array7@result8C 00 sukses @responFBsuksesBH /C @responFBpesanBH BPencarian "adwal berhasilBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH Bidak ada "adwal berangkat yaBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset
kota)asalG@asalG
and
@responFBsuksesBH ;C @responFBpesanBH Bdata belum terisiBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E %ile ini betugas untuk memparsing data hasil pencarian "adwal, lewat pencarian berdasarkan kota asal , kota tu"uan dan tanggal pesan.
list_jadwal.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGasalGH8 II isset7@)POSFGtu"uanGH8 II isset7@)POSFGtanggalGH88 @asal @)POSFGasalGHC @tu"uan @)POSFGtu"uanGHC @tanggal @)POSFGtanggalGHC
00 Duery ambil data member berdasarkan id @result
mysDl)Duery7BSK$KL
M
%O9
"adwal
5!KK
kota)asalG@asalG
kota)tu"uanG@tu"uanG and tanggal)berangkatG@tanggalGB8 or die7mysDl)error788C if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8
and
00 node "adwal @responFB"adwalBH array78C while 7@row mysDl)fetch)array7@result88
@seatmysDl)Duery7BSK$KL sum7Dty8 as total %O9 pesan 5!KK id)"adwal @rowFidHB8C @hasilmysDl)fetch)array7@seat8C @"umlah @hasilFBtotalBHC @sisa)seat @rowFBseatBH # @"umlahC
00 temp "adwal array @"adwal array78C @"adwalFBidBH @rowFBidBHC @"adwalFBasalBH @)POSFGasalGHC @"adwalFBtu"uanBH @)POSFGtu"uanGHC @"adwalFBtanggalBH @rowFBtanggal)berangkatBHC @"adwalFBberangkatBH @rowFB"am)berangkatBHC @"adwalFBhargaBH @rowFBhargaBHC @"adwalFBseatBH @sisa)seatC
00tambahkan array @"adwal pada array final @respon array)push7@responFB"adwalBH, @"adwal8C 00 sukses @responFBsuksesBH /C
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH Bidak ada "adwal berangkatBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responFBsuksesBH ;C @responFBpesanBH Bdata "son tidak terkirimBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E %ile ini bertugas untuk menampilkan data "adwal yang tersedia berdasarkan pilihan member ddari aplikasi android.
simpanpesanan.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C 00buat array untuk menampung respon dari JSON @response array78C
00 cek apakah nilai yang dikirimkan android sudah terisi
if
7empty7@)POSFGid"adwalGH8 empty7@)POSFGDtyGH8
QQ QQ
empty7@)POSFGnamaGH8
QQ
empty7@)POSFGstatusGH8
QQ
empty7@)POSFGtelponGH8 empty7@)POSFGtotalGH8
empty7@)POSFGusernameGH8 QQ empty7@)POSFGseatGH88 00 "ika data tidak terisi0tidak terset @responseFBsuccessBH ;C @responseFBmessageBH Bata *elum terseting dengan benarBC 00 memprint0mencetak JSON respon echo "son)encode7@response8C
else
@seatmysDl)Duery7BSK$KL M %O9 "adwal 5!KK id G@)POSFid"adwalHGB8C if 7mysDl)num)rows7@seat8 E ;8 @Dty)seat @)POSFGDtyGHC @sisa)seat @)POSFGseatGHC
if 7@Dty)seat E @sisa)seat8
@responseFBsuccessBH ;C @responseFBmessageBH BJumlah *eli tidak boleh lebih besar dari seat yang tersediaBC echo "son)encode7@response8C
else @id"adwal @)POSFGid"adwalGHC @nama @)POSFGnamaGHC @telpon @)POSFGtelponGHC @Dty @)POSFGDtyGHC @status @)POSFGstatusGHC @total @)POSFGtotalGHC @tanggal date7GU#m#dG8C @username @)POSFGusernameGHC
QQ QQ
00 Duery menambah data member @result
mysDl)Duery7BRNSK
RNO
pesan7id)"adwal,nama,
telpon,
Dty,
total,tanggal)pesan,id)member8 A$=KS7G@id"adwalG,G@namaG,G@telponG,G@DtyG,G@statusG,G@totalG,G@tanggalG,G@usernameG8B8C 00 cek apakah Duery berhasil menambah data if 7@result8 00 "ika berhasil menambah data ke mysDl @responseFBsuccessBH /C @responseFBmessageBH B*erhasil menyimpan data pesanan.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C else 00 gagal menambah data member @responseFBsuccessBH ;C @responseFBmessageBH B-agal menyimpan data pesan.BC 00 memprint0mencetak JSON respon echo "son)encode7@response8C
?E %ile ini bertugas untuk menyimpan data pemesanan member ke tabel pesan .
selesaipesan.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
status,
00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)-KFGusernameGH88 @username @)-KFGusernameGHC
00 Duery ambil data member berdasarkan id @result mysDl)Duery7BSK$KL M %O9 pesan where id)memberG@usernameG OK *U id KSL $R9R /B8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 00 node "adwal @responFBselesaiBH array78C @row mysDl)fetch)array7@result8C @selesai array78C @selesaiFBidBH @rowFBidBHC @selesaiFBnamaBH @rowFBnamaBHC @selesaiFBtotalBH @rowFBtotalBHC 00tambahkan array @"adwal pada array final @respon array)push7@responFBselesaiBH, @selesai8C
00 sukses @responFBsuksesBH /C @responFBpesanBH BPesanan selesai dilakukanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else
00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH BKrror PesananBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responFBsuksesBH ;C @responFBpesanBH Bdata belum terisiBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E %ile ini bertugas untuk menyelesaikan pesanan dan mengkonfirmasi pesanan pada tahap akhir.
cari_batal.php
>?php reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @response array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGidGH8 II isset7@)POSFGnamaGH8 II isset7@)POSFGusernameGH88
@id @)POSFGidGHC @nama @)POSFGnamaGHC @username @)POSFGusernameGHC
00 Duery update berdasarkan id @result mysDl)Duery7BSK$KL M %O9 pesan 5!KK id)member G@usernameG AN id G@idG AN nama G@namaGB8C
if 7empty7@result88 if 7mysDl)num)rows7@result8 E ;8 00 "ika sukses cari @responseFBsuccessBH /C @responseFBmessageBH BPencarian R *erhasil.BC 00 memprint0mencetak JSON respon echo "son)encode7@response8C if 7mysDl)num)rows7@result8 ;8 00 gagal update data @responseFBsuccessBH ;C @responseFBmessageBH B-agal mencari R, atau Anda tidak pernah memesan dengan R ersebut.BC
00 memprint0mencetak JSON respon echo "son)encode7@response8C
?E
%ile ini bertugas untuk membatalkan pemesanan, berdasarkan R pesanan yang dimiliki oleh member.
konfirm_batal.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)-KFGusernameGH8 II isset7@)-KFGidGH8 II isset7@)-KFGnamaGH88 @username @)-KFGusernameGHC @id @)-KFGidGHC @nama @)-KFGnamaGHC 00 Duery ambil data member berdasarkan id @result mysDl)Duery7Bselect p.M, ".id, ".kota)asal, ".kota)tu"uan,".tanggal)berangkat %O9 pesan as p, "adwal as " 5!KK p.id)memberG@usernameG AN p.idG@idG AN p.namaG@namaG AN ".idp.id)"adwalB8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 00 node batal @responFBbatalBH array78C @row mysDl)fetch)array7@result8C @batal array78C @batalFBidBH @)-KFBidBHC
@batalFBasalBH @rowFBkota)asalBHC @batalFBtu"uanBH @rowFBkota)tu"uanBHC @batalFBtanggalBH @rowFBtanggal)berangkatBHC @batalFBtotalBH @rowFBtotalBHC @batalFB"umlahBH @rowFBDtyBHC @batalFBstatusBH @rowFBstatusBHC 00tambahkan array @"adwal pada array final @respon array)push7@responFBbatalBH, @batal8C
00 sukses @responFBsuksesBH /C @responFBpesanBH BPembatalan Pesanan selesai dilakukanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH BKrror PembatalanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset
@responFBsuksesBH ;C @responFBpesanBH Bdata belum terisiBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E
%ile ini bertugas untuk mengkonfirmasi pembatalan pesanan .
hapus_pesan.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @response array78C
00 cek apakah variabel idmem sudah terset 0 terisi if 7isset7@)POSFGidGH88 @id @)POSFGidGHC
00 Duery update member berdasarkan id @result mysDl)Duery7BK$KK %O9 pesan 5!KK id @idB8C
00 "ika berhasil di hapus if 7mysDl)affected)rows78 E ;8 @responseFBsuksesBH /C @responseFBpesanBH BPesanan berhasil dibatalkanBC
00 memprint0mencetak JSON respon echo "son)encode7@response8C
else 00 "ika gagal dihapus @responseFBsuksesBH ;C @responseFBpesanBH B-agal dibatalkanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responseFBsuksesBH ;C @responseFBpesanBH Bdata belum terisiBC
00 memprint0mencetak JSON respon echo "son)encode7@response8C ?E %ile ini bertugas untuk menghapus pesanan dari tabel pesan setelah proses konfirmasi pembatalan pesan.
cek_status.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGusernameGH88 @username @)POSFGusernameGHC
00 Duery ambil data member berdasarkan id @result mysDl)Duery7Bselect p.id as idpesan,p.total,p.tanggal)pesan,p.status, ".id, ".kota)asal, ".kota)tu"uan %O9 pesan as p, "adwal as " 5!KK p.id)memberG@usernameG AN p.id)"adwal".idB8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 00 node "adwal @responFBstatusBH array78C while 7@row mysDl)fetch)array7@result88 00 temp "adwal array @status array78C @statusFBidBH @rowFBidpesanBHC @statusFBasalBH @rowFGkota)asalGHC @statusFBtu"uanBH @rowFGkota)tu"uanGHC @statusFBtanggalBH @rowFBtanggal)pesanBHC @statusFBtotalBH @rowFBtotalBHC @statusFBstatusBH @rowFBstatusBHC
00tambahkan array @"adwal pada array final @respon array)push7@responFBstatusBH, @status8C 00 sukses @responFBsuksesBH /C 00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8
@responFBsuksesBH ;C @responFBpesanBH Bidak ada data pesananBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responFBsuksesBH ;C @responFBpesanBH Bdata "son tidak terkirimBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E %ile ini bertugas untuk melihat status pemesanan member, apakah sudah dibayar atau belum dibayar.
cetak_bukti.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C
00buat array untuk menampung respon dari JSON
@respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)POSFGusernameGH88 @username @)POSFGusernameGHC
00 Duery ambil data member berdasarkan id @result
mysDl)Duery7Bselect
M
from
pesan
5!KK
statusG$unasGB8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 00 node "adwal @responFBcetakBH array78C while 7@row mysDl)fetch)array7@result88 00 temp "adwal array @cetak array78C @cetakFBidBH @rowFBidBHC
00tambahkan array @"adwal pada array final @respon array)push7@responFBcetakBH, @cetak8C 00 sukses @responFBsuksesBH /C
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH Bidak ada data pesananBC
id)memberG@usernameG
AN
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responFBsuksesBH ;C @responFBpesanBH Bdata "son tidak terkirimBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E
%ile ini bertugas untuk mencari R pesanan yang sudah lunas dibayar untuk proses pencetakan berikutnya.
detail_cetak.php
>?php error)reporting7;8C reDuire7Bkoneksi.phpB8C 00buat array untuk menampung respon dari JSON @respon array78C
00 cek apakah nilai yang dikirimkan android sudah terisi if 7isset7@)-KFGusernameGH8 II isset7@)-KFGid"adwalGH88 @username @)-KFGusernameGHC @id @)-KFGid"adwalGHC
00 Duery ambil data member berdasarkan id @result
mysDl)Duery7Bselect
p.M,
".id,
".kota)asal,
".kota)tu"uan,
".tanggal)berangkat,
"."am)berangkat,".harga %O9 pesan as p, "adwal as " 5!KK p.id)memberG@usernameG AN p.idG@idG AN ".idp.id)"adwalB8C
if 7empty7@result88 00 "ika data "adwal ada 7besar dari nol8 if 7mysDl)num)rows7@result8 E ;8 00 node batal @responFBcetakBH array78C @row mysDl)fetch)array7@result8C @cetak array78C @cetakFBidBH @)-KFBid"adwalBHC @cetakFBnamaBH @rowFBnamaBHC @cetakFBtelponBH @rowFBtelponBHC @cetakFBasalBH @rowFBkota)asalBHC @cetakFBtu"uanBH @rowFBkota)tu"uanBHC @cetakFBtanggal)berangkatBH @rowFBtanggal)berangkatBHC @cetakFB"am)berangkatBH @rowFB"am)berangkatBHC @cetakFBtanggalBH @rowFBtanggal)pesanBHC @cetakFBhargaBH @rowFBhargaBHC @cetakFBtotalBH @rowFBtotalBHC @cetakFB"umlahBH @rowFBDtyBHC @cetakFBstatusBH @rowFBstatusBHC 00tambahkan array @"adwal pada array final @respon
array)push7@responFBcetakBH, @cetak8C
00 sukses @responFBsuksesBH /C @responFBpesanBH BLetak Pesanan selesai dilakukanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 tidak ada member 7kecil dari nol8 @responFBsuksesBH ;C @responFBpesanBH BKrror PencetakanBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika Duery tidak tidak menghasilkan data 7tidak ada member8 @responFBsuksesBH ;C @responFBpesanBH B-agal TueryBC
00 memprint0mencetak JSON respon echo "son)encode7@respon8C else 00 "ika data tidak terisi0tidak terset @responFBsuksesBH ;C @responFBpesanBH Bdata belum terisiBC 00 memprint0mencetak JSON respon echo "son)encode7@respon8C ?E
%ile ini bertugas untuk mengambil detail data pesan untuk proses pencetakan dari aplikasi android.
8.4 Pembuatan Aplikasi Client dengan Android Oke, aplikasi server sudah terbuat, file#file berformat JSON "uga sudah dibuat. 9ari kita buat aplikasi berbasis androidnya dengan memanfaatkan file#file JSON yang dibahas di bab .2. *uat lagi pro"ect baru pada eclipse dengan nama &pemesanan' dengan konfigurasi sebagai berikut +
Application Name
Pemesanan
Pro"ect Name
Pemesanan
Package Name
com.asfa.pemesanan
9inimum S<
APR /: 7Android 3.38
arget S<
APR 1/ 7Android 4.;./8
Lompile with
APR 1/ 7Android 4.;./8
heme
none
Activity Name
SplashActivity
$ayout Name
activity)splash
A.
Bagian plash creen
Oke, mari kita buat satu persatu file#file yang dibutuhkan untuk aplikasi ini. Uang pertama kita buat tentu adalah splash screen untuk tampilan awal dari aplikasi.
plashActi!it".ja!a package com.dharma.pemesanan; import import import import
android.app.Activity; android.content.Intent; android.os.Bundle; android.os.Handler;
public class SplashActivity extends Activity {
/* kode untuk menampilkan splash screen salama 5 detik */ private final int SPASH!"ISPA#!$%&H' ( 5)));
/** alled +hen the activity is ,irst created. */ -verride public void onreateBundle icicle0 { super.onreateicicle0; /* layout splashscreen den1an 2ack1round 1am2ar */ setontent3ie+4.layout.activity_splash0; /* handler untuk menalankan splashscreen selama 5 detik lalu * */mem2uat HomeActivity new Handler0.post"elayednew 4unna2le0 { -verride public void run0 { Intent mainIntent ( null; mainIntent ( new IntentSplashActivity.this6 "ash2oardActivity.class0; SplashActivity.this.startActivitymainIntent0; SplashActivity.this.,inish0; 7 76 SPASH!"ISPA#!$%&H'0; 7 7
acti!it"_splash.#ml 89:ml version("1.0" encodin1("utf-8"9 8inearayout :mlns
=ntuk keperluan gambar pada splash screen, file#file gambar akan kita letakkan pada folder drawable di dalam folder res, seperti pembahasan pada bab sebelumnya.
-ambar ./:. ampilan splash screen aplikasi pemesanan
B.
Bagian Dashboard $enu % $enu &tama
*erikutnya, setelah splash screen selesai ditampilkan maka akan muncul halaman dashboard yang berisi menu#menu seperti entang, Rnformasi, *antuan, $okasi Pool dan KVit. *isa dilihat pada gambar .1;.
-ambar .1;. ampilan ashboard aplikasi pemesanan *erikut
adalah
file#file
yang
berhubungan
dengan
dashboard.
Uang
pertama
adalah
ashboardActivity."ava, file activity ini mengatur menu W menu yang ada di halaman dashboard dan tu"uan#tu"uan activity lain ketika salah satu menu diklik. DashboardActi!it".ja!a package com.dharma.pemesanan; import android.app.Activity; import import import import
android.content.Intent; android.os.Bundle; android.vie+.3ie+; android.+id1et.Button;
public class "ash2oardActivity extends Activity {
-verride public void onreateBundle savedInstanceState0 {
super.onreatesavedInstanceState0; setontent3ie+4.layout.dashboard_layout0;
/** * reatin1 all 2uttons instances * */ // "ash2oard %e+s ,eed 2utton Button 2tn!in,o ( Button0 ,ind3ie+ById4.id.btn_info0; // "ash2oard =riends 2utton Button 2tn!2antuan ( Button0 ,ind3ie+ById4.id.btn_bantuan0; // "ash2oard >essa1es 2utton Button 2tn!lokasi ( Button0 ,ind3ie+ById4.id.btn_lokasi0; // "ash2oard Places 2utton Button 2tn!pesan ( Button0 ,ind3ie+ById4.id.btn_pesan0; // "ash2oard $vents 2utton Button 2tn!e:it ( Button0 ,ind3ie+ById4.id.btn_eit0; // "ash2oard $vents 2utton Button 2tn!1edun1 ( Button0 ,ind3ie+ById4.id.btn_#edun#0;
/** * Handlin1 all 2utton click events * */ // istenin1 to %e+s =eed 2utton click 2tn!in,o.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ vie+0 { // aunchin1 %e+s =eed Screen Intent i ( new Intent1etApplicationonte:t06 In,oActivity.class0; startActivityi0; 7 70; // istenin1 =riends 2utton click 2tn!2antuan.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ vie+0 { Intent i ( new Intent1etApplicationonte:t06 BantuanActivity.class0; startActivityi0; 7 70; // istenin1 >essa1es 2utton click 2tn!lokasi.setnlickistenernew 3ie+.nlickistener0 {
-verride public void onlick3ie+ vie+0 { // aunchin1 %e+s =eed Screen Intent i ( new Intent1etApplicationonte:t06 okasiActivity.class0; startActivityi0; 7 70; // istenin1 to Places 2utton click 2tn!pesan.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ vie+0 { // aunchin1 %e+s =eed Screen Intent i ( new Intent1etApplicationonte:t06 o1inActivity.class0; startActivityi0; 7 70;
// istenin1 to $vents 2utton click 2tn!e:it.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ vie+0 { ,inish0; System.eit)0; 7 70; // istenin1 to $vents 2utton click 2tn!1edun1.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ vie+0 { Intent i ( new Intent1etApplicationonte:t06 'entan1Activity.class0; startActivityi0; 7 70; 7 }
*erikutnya adalah ashboard$ayout."ava, %ile ini mengatur posisi dari menu#menu gambar yang ber"umlah ( buah icon agar posisi sesuai dengan halaman activity.
Dashboard'a"out.ja!a package com.dharma.pemesanan; import import import import
android.content.onte:t; android.util.Attri2uteSet; android.vie+.3ie+; android.vie+.3ie+&roup;
/** * ustom layout that arran1es children in a 1rid?like manner6 optimi@in1 ,or even hori@ontal and * vertical +hitespace. */ public class "ash2oardayout extends 3ie+&roup { private static final int $%&'&%_()*+_,&%_$*,*&) ( ); private int m>a:hildidth ( ); private int m>a:hildHei1ht ( ); public "ash2oardayoutonte:t conte:t0 { superconte:t6 null0; 7 public "ash2oardayoutonte:t conte:t6 Attri2uteSet attrs0 {
7
superconte:t6 attrs6 )0;
public "ash2oardayoutonte:t conte:t6 Attri2uteSet attrs6 int de,Style0 { superconte:t6 attrs6 de,Style0; 7
-verride protected void on>easureint +idth>easureSpec6 int hei1ht>easureSpec0 { m>a:hildidth ( ); m>a:hildHei1ht ( ); // >easure once to ,ind the ma:imum child si@e. int childidth>easureSpec ( >easureSpec.makeeasure2pec >easureSpec.#et2i3e+idth>easureSpec06 >easureSpec._420; int childHei1ht>easureSpec ( >easureSpec.makeeasure2pec >easureSpec.#et2i3e+idth>easureSpec06 >easureSpec._420; final int count ( 1ethildount0; for int i ( ); i 8 count; iCC0 { final 3ie+ child ( 1ethildAti0; if child.1et3isi2ility0 (( (4%&0 { continue; 7
child.measurechildidth>easureSpec6 childHei1ht>easureSpec0;
m>a:hildidth ( >ath. mam>a:hildidth6 child.1et>easuredidth00; m>a:hildHei1ht ( >ath.mam>a:hildHei1ht6 child.1et>easuredHei1ht00; 7 // >easure a1ain ,or each child to 2e e:actly the same si@e. childidth>easureSpec ( >easureSpec.makeeasure2pec m>a:hildidth6 >easureSpec.&560; childHei1ht>easureSpec ( >easureSpec. >easureSpec.makeeasure2pec m>a:hildHei1ht6 &560; for int i ( ); i 8 count; iCC0 { final 3ie+ child ( 1ethildAti0; if child.1et3isi2ility0 (( (4%&0 { continue; 7
child.measurechildidth>easureSpec6 childHei1ht>easureSpec0; 7 set>easured"imension resolve2i3em>a:hildidth6 +idth>easureSpec06 resolve2i3em>a:hildHei1ht6 hei1ht>easureSpec00; 7 -verride protected void onayoutboolean chan1ed6 int l6 int t6 int r6 int 20 { int +idth ( r ? l; int hei1ht ( 2 ? t; final int count ( 1ethildount0;
// alculate the num2er o, visi2le children. int visi2leount ( ); for int i ( ); i 8 count; iCC0 { final 3ie+ child ( 1ethildAti0; if child.1et3isi2ility0 (( (4%&0 { continue; 7 CCvisi2leount; 7 if visi2leount (( )0 { return; 7
// alculate +hat num2er o, ro+s and columns +ill optimi@e ,or even hori@ontal and // vertical +hitespace 2et+een items. Start +ith a : % 1rid6 then try D : %6 and so on. int 2estSpace"i,,erence ( Inte1er.5_'$&; int space"i,,erence; // Hori@ontal and vertical space 2et+een items int hSpace ( );
int vSpace ( ); int cols ( ; int ro+s; while true0 { ro+s ( visi2leount ? 0 / cols C ;
hSpace * cols0 / / cols C C 00; vSpace ( ( +idth hei1ht??m>a:hildidth m>a:hildHei1ht * ro+s0 ro+s 00; space"i,,erence ( >ath.absvSpace ? hSpace0; if ro+s * cols E( visi2leount0 { space"i,,erence *( $%&'&%_()*+_,&%_$*,*&); 7 if space"i,,erence 8 2estSpace"i,,erence0 { // =ound a 2etter +hitespace sFuareness/ratio 2estSpace"i,,erence ( space"i,,erence;
// I, +e ,ound a 2etter +hitespace sFuareness and thereGs only ro+6 this is // the 2est +e can do. if ro+s (( 0 { break; 7 7 else { // 'his is a +orse +hitespace ratio6 use the previous value o, cols and e:it. ??cols; ro+s ( visi2leount ? 0 / cols C ; hSpace ( +idth ? m>a:hildidth * cols0 / cols C 00; vSpace ( hei1ht ? m>a:hildHei1ht * ro+s0 / ro+s C 00; break; 7 CCcols; 7 // ay out children 2ased on calculated 2est?,it num2er o, ro+s and cols. // I, +e chose a layout that has ne1ative hori@ontal or vertical space6 ,orce it to @ero. hSpace ( >ath.ma)6 hSpace0; vSpace ( >ath.ma)6 vSpace0; // 4e?use +idth/hei1ht varia2les to 2e child +idth/hei1ht. +idth ( +idth ? hSpace * cols C 00 / cols; hei1ht ( hei1ht ? vSpace * ro+s C 00 / ro+s; int int int for
le,t6 top; col6 ro+; visi2leInde: ( ); int i ( ); i 8 count; iCC0 { final 3ie+ child ( 1ethildAti0;
if child.1et3isi2ility0 (( (4%&0 { continue; 7
ro+ ( visi2leInde: / cols; col ( visi2leInde: cols; le,t ( hSpace * col C 0 C +idth * col; top ( vSpace * ro+ C 0 C hei1ht * ro+; child.layoutle,t6 top6 hSpace (( ) col (( cols ? 0 9 r < le,t C +idth06 vSpace (( ) ro+ (( ro+s ? 0 9 2 < top C hei1ht00; CCvisi2leInde:; 7 7 7
*erikutnya adalah file layout yang menghandle halaman dashboard. %ile ini meng#includekan sebuah file layout lagi bernama fragment)layout.Vml. dashboard_la"out.#ml 8inearayout :mlns
Include =ra1mented dash2oard ?? 8include layout("@layout/fra#ment_layout"/
%ile fragment)layout.Vml bertugas untuk menampilkan icon#icon gambar yang berada pada folder drawable lewat component *utton. fragment_la"out.#ml 8com.dharma.pemesanan."ash2oardayout :mlns
style("@style/+ashboard7utton" androidessa1es Button ?? 8Button android
C.
Bagian 'ogin Dan (egister
Setelah dashboard, berikutnya kita akan bahas file#file class dan layout yang berhubungan dengan masing#masing icon menu yang ada pada dashboard. Uang dibahas pertama adalah ketika member mengklik menu0icon )esan Tiket* karena sebenarnya di menu inilah yang banyak membutuhkan file#file class dan layout dan inti dari aplikasi yang kita bangun.
Setelah member mengklik menu pesan tiket maka aplikasi akan mengarahkan ke activity $ogin atau egister. Aplikasi ini pernah dibahas di bab sebelumnya. 9ari kita buat file#file yang berkaitan dengan bagian ini.
+.,-. Tampilan 'ogin Aplikasi )emesanan Tiket
%ile $oginActivity."ava, memanfaatkan file login.php yang kita buat di sub bab sebelumnya, proses validasi member dari input user akan dikirimkan dengan format JSON.
'oginActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.ist; import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%$:ception; or1.son.JS%2ect;
import import import import import import import import
android.app.Activity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.vie+.3ie+.nlickistener;
import import android.+id1et.Button; android.+id1et.$dit'e:t; import android.+id1et.'oast; public class o1inActivity extends Activity implements nlickistener{ private $dit'e:t user6 pass; private Button mSu2mit6 m4e1ister;
// Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1; // JS% parser class JS%Parser sonParser ( new JS%Parser0; Session>ana1er session; //testin1 on $mulator< private static final Strin1 4(*%_$) ( Khttp/).).D.D/android!tiket/lo1in.phpK;
private static final Strin1 (_2$66&22 ( KsuccessK; private static final Strin1 (_&22(& ( Kmessa1eK;
-verride protected void onreateBundle savedInstanceState0 { // !D! Auto?1enerated method stu2 super.onreatesavedInstanceState0; setontent3ie+4.layout.lo#in0; session ( new Session>ana1er1etApplicationonte:t00; //setup input ,ields user ( $dit'e:t0,ind3ie+ById4.id.username0; pass ( $dit'e:t0,ind3ie+ById4.id.password0; //setup 2uttons mSu2mit ( Button0,ind3ie+ById4.id.lo#in0; m4e1ister ( Button0,ind3ie+ById4.id.re#ister0; //re1ister listeners mSu2mit.setnlickistenerthis0; m4e1ister.setnlickistenerthis0; 7
-verride public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.lo#in< new Attempto1in0.e:ecute0; break; case 4.id.re#ister< Intent i ( new Intentthis6 "a,tarActivity.class0; startActivityi0; break; default< break; 7
7 class Attempto1in extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1o1inActivity.this0; p"ialo1.set>essa1eKAttemptin1 lo1in...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; Strin1 username ( user.1et'e:t0.toStrin10; Strin1 pass+ord ( pass.1et'e:t0.toStrin10; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00; params.addnew Basic%ame3aluePairKpass+ordK6 pass+ord00; o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 4(*%_$)6 KPS'K6 params0; // check your lo1 ,or son response o1.dKo1in attemptK6 son.toStrin100;
// son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { o1.dKo1in Success,ulEK6 son.toStrin100; Intent in ( new Intento1inActivity.this6 >enu>em2er.class0; session.createo1inSessionusername0; ,inish0; return startActivityin0; son.1etStrin1(_&22(&0; 7else{ o1.dKo1in =ailureEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeeto1inActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7 7 7
7
login.#ml 84elativeayout :mlns
android
"@id/re#ister" android
8/$dit'e:t 8'e:t3ie+ android
8$dit'e:t android
Sedangkan file aftarActivity."ava memanfaatkan file register.php yang dibuat sebelumnya, file ini akan memproses inputan data member untuk dikirimkan dengan format JSON untuk disimpan ke database dan tabel member.
+.,,. Tampilan Daftar $ember )emesanan Tiket
DaftarActi!it".ja!a package com.dharma.pemesanan; import import import import import import import
ava.util.Arrayist; ava.util.ist; or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.Activity;
import import import import import import import import import import
android.app.Pro1ress"ialo1; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button; android.+id1et.$dit'e:t; android.+id1et.'oast; android.+id1et.'e:t3ie+;
import android.+id1et.4adioButton; public class "a,tarActivity extends Activity implements nlickistener{ private private private private
$dit'e:t $dit'e:t $dit'e:t $dit'e:t
user; pass; nama; alamat;
private private private private private
$dit'e:t 'e:t3ie+ telpon; t; 4adioButton r2; 4adioButton r2D; Button m4e1ister;
// Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1; // JS% parser class JS%Parser sonParser ( new JS%Parser0;
//testin1 on $mulator< private static final Strin1 4(*%_$) ( Khttp/).).D.D/android!tiket/re1ister.phpK; private static final Strin1 (_2$66&22 ( KsuccessK; private static final Strin1 (_&22(& ( Kmessa1eK;
-verride protected void onreateBundle savedInstanceState0 { // !D! Auto?1enerated method stu2 super.onreatesavedInstanceState0; setontent3ie+4.layout.daftar0; nama ( alamat telpon user ( pass (
$dit'e:t0,ind3ie+ById4.id.nama0; ( $dit'e:t0,ind3ie+ById4.id.alamat0; ( $dit'e:t0,ind3ie+ById4.id.telpon0; $dit'e:t0,ind3ie+ById4.id.username0; $dit'e:t0,ind3ie+ById4.id.password0;
r2(4adioButton0,ind3ie+ById4.id.option10; r2D(4adioButton0,ind3ie+ById4.id.option!0; t('e:t3ie+0,ind3ie+ById4.id.et'iew010;
m4e1ister ( Button0,ind3ie+ById4.id.re#ister0; m4e1ister.setnlickistenerthis0; 7 -verride public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 new reateLser0.e:ecute0; 7
class reateLser extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false;
-verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1"a,tarActivity.this0; p"ialo1.set>essa1eK>enda,tar >em2er...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; Strin1 namanya ( nama.1et'e:t0.toStrin10; Strin1 alamatnya ( alamat.1et'e:t0.toStrin10; Strin1 telponnya ( telpon.1et'e:t0.toStrin10; Strin1 username ( user.1et'e:t0.toStrin10; Strin1 pass+ord ( pass.1et'e:t0.toStrin10; ifr2.ishecked0 (( true0 t.set'e:tr2.1et'e:t00; ifr2D.ishecked0 (( true0 t.set'e:tr2D.1et'e:t00; ifr2.ishecked0 (( false r2D.ishecked0 (( false0 t.set'e:tKK0;
Strin1 enkel ( t.1et'e:t0.toStrin10; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00; params.addnew Basic%ame3aluePairKpass+ordK6 pass+ord00; params.addnew Basic%ame3aluePairKnamaK6 namanya00; params.addnew Basic%ame3aluePairKalamatK6 alamatnya00;
params.addnew Basic%ame3aluePairKtelponK6 telponnya00; params.addnew Basic%ame3aluePairKenkelK6 enkel00; o1.dKreFuestEK6 Kstartin1K0; //Postin1 user data to script JS%2ect son ( sonParser.makeHttp4eFuest 4(*%_$)6 KPS'K6 params0; // ,ull son response
o1.dKo1in attemptK6 son.toStrin100; // son success element success ( son.1etInt(_2$66&220; if success (( 0 { o1.dKLser reatedEK6 son.toStrin100; ,inish0; return son.1etStrin1(_&22(&0; 7else { dKo1in =ailureEK6 son.1etStrin1(_&22(&00; o1. return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeet"a,tarActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7 7 7 7
an file layout daftar.Vml yang mengatur tata letak komponen pada activity aftarActivity."ava. daftar.#ml 89:ml version("1.0" encodin1("utf-8"9 8Scroll3ie+ :mlns
8'e:t3ie+ androidenis ?elamin" / 84adio&roup android
%ame 'e:t=ield ??
8E?? %ame a2el ?? 8'e:t3ie+ android
android
8E?? %ame a2el ?? 8'e:t3ie+ android
android
Pada bagian ini "uga membutuhkan class pendukung yaitu JSONParser."ava Session9anager."ava.
dan
Bagian $enu &tama $ember
Jika member berhasil login dengan email dan password yang benar, maka member akan diarahkan ke activity menu member. imana di menu ini kita kan membuat lagi menu#menu lain yang bisa dilakukan oleh member, seperti Cari adwal dan )esan Tiket* Batalkan )emesanan* Cek tatus )emba"aran* Bukti )emesanan* /nformasi dan 0eluar.
+.,1. Tampilan $enu &tama $ember )emesanan Tiket
$enu$ember.ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import import import import import import import import
android.app.Activity; android.content.Intent; android.os.Bundle; android.vie+.3ie+; android.+id1et.Adapter3ie+; android.+id1et.Adapter3ie+.nItemlickistener; android.+id1et.ArrayAdapter; android.+id1et.ist3ie+;
public class >enu>em2er extends Activity implements nItemlickistener{ private ist3ie+ lv; ArrayAdapter8Strin1 adapter; Arrayist8Hash>ap8Strin16 Strin1 menu; // Session >ana1er lass Session>ana1er session;
-verride protected void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.mainlistview0; // Session class instance session ( new Session>ana1er1etApplicationonte:t00; session.checko1in0; Strin1MN menu ( new Strin1MN { Kari Jad+al "an Pesan 'iketK6 KBatalkan PemesananK6 Kek Status Pem2ayaranK6 KBukti PemesananK6 KIn,ormasiK6 KOeluarK 7; lv ( ist3ie+0,ind3ie+ById4.id.list_view0; lv.setnItemlickistenernew Adapter3ie+.nItemlickistener0 { public void onItemlickAdapter3ie+89 parent6 3ie+ vie+6 int position6 long id0 { // !D! Auto?1enerated method stu2 Strin1 pilihan ( lv.1etItemAtPositionposition0.toStrin100; tampilkan>enupilihan0; 7 private void tampilkan>enuStrin1 pilihan0 { session.checko1in0; // !D! Auto?1enerated method stu2
Intent i ( null; if pilihan.eFualsKari Jad+al "an Pesan 'iketK00 { i ( new Intent>enu>em2er.this6 Jad+alActivity.class0; 7 else if pilihan.eFualsKBatalkan PemesananK00 { i ( new Intent>enu>em2er.this6 BatalActivity.class0; 7 else if pilihan.eFualsKek Status Pem2ayaranK00 { i 7 ( new Intent>enu>em2er.this6 StatusActivity.class0; else if pilihan.eFualsKBukti PemesananK00 { i ( new Intent>enu>em2er.this6 BuktiActivity.class0; 7 else if pilihan.eFualsKIn,ormasiK00 { i ( new Intent>enu>em2er.this6 In,oActivity.class0; 7 else if pilihan.eFualsKOeluarK00 { session.lo1outLser0; i ( new Intent>enu>em2er.this6 "ash2oardActivity.class0; ,inish0; System.eit)0; 7 startActivityi0; 7 70; adapter ( new ArrayAdapter8Strin1this6 4.layout.list_menu6 4.id.nama_menu6 menu0; lv.setAdapteradapter0; 7 -verride public void onItemlickAdapter3ie+89 parent6 3ie+ vie+6 int position6 long id0 { // !D! Auto?1enerated method stu2 7 }
Pada layout menu member kita akan menggunakan komponen listview sa"a di file mainlistview.Vml. mainlist!iew.#ml 89:ml version("1.0" encodin1("utf-8"9 84elativeayout :mlns
android
-.
Cari adwal
Pada menu ini kita akan membuat fitur pencarian "adwal keberangkatan bus. isini kita menggunakan trik menggunakan spiner yang sudah dibahas di bab sebelumnya. *erikut ini adalah file#file yang harus dibuat berkaitan dengan menu Lari "adwal.
+.,2. Tampilan Acti!it" )encarian adwal )emesanan Tiket
Pada activity pencarian "adwal yang ditugaskan oleh file JadwalActivity."ava, menggunakan 2 buah file P!P untuk memparsing data JSONnya, yang pertama kota)asal.php untuk mengambil data dari tabel kota asal, kedua kota)tu"uan.php untuk mengambil data kota tu"uan dan file cari)"adwal.php untuk mencari berdasarkan kriteria kota)asal, kota)tu"uan dan tanggal berangkat.
adwalActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.alendar; import ava.util.ist; import import import import import import import import import import import import import import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.Activity; android.app."atePicker"ialo1; android.app."ialo1; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.>enu; android.vie+.>enuIn,later; android.vie+.>enuItem; android.vie+.3ie+; android.+id1et.Adapter3ie+; android.+id1et.Adapter3ie+.nItemSelectedistener;
import import import import import import import import
android.+id1et.ArrayAdapter; android.+id1et.Button; android.+id1et."atePicker; android.+id1et.Ima1eButton; android.+id1et.Spinner; android.+id1et.'e:t3ie+; android.+id1et.'oast; android.+id1et.$dit'e:t;
public class Jad+alActivity extends Activity implements nItemSelectedistener { private Button 2tnariJad+al; //private 'e:t3ie+ t:tate1ory; private Spinner spinnerOotaAsal; private Spinner spinnerOota'uuan; // array list ,or spinner adapter private Arrayist8OotaAsal asalist; private Arrayist8Oota'uuan tuuanist; Pro1ress"ialo1 p"ialo1; Pro1ress"ialo1 p"ialo1D; private 'e:t3ie+ te:tSpin; private 'e:t3ie+ te:tSpinD; private Ima1eButton i2; private alendar cal; private int day; private int month;
private int year; private $dit'e:t et;
// JS% parser class JS%Parser sonParser ( new JS%Parser0; private Strin1 L4!O'A!ASA ( Khttp/).).D.D/android!tiket/kota!asal.phpK; private Strin1 L4!O'A!'LJLA% (
Khttp/).).D.D/android!tiket/kota!tuuan.phpK; private static final Strin1 6)*_>+A ( Khttp/).).D.D/android!tiket/cari!ad+al.phpK; private static final Strin1 (_2$66&22 ( KsuksesK; private static final Strin1 (_&22(& ( KpesanK;
-verride protected void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.Cadwal0; 2tnariJad+al ( Button0 ,ind3ie+ById4.id.btncari0; spinnerOotaAsal ( Spinner0 ,ind3ie+ById4.id.spinsal0; spinnerOota'uuan ( Spinner0 ,ind3ie+ById4.id.spinuCuan0; te:tSpin ( 'e:t3ie+0 ,ind3ie+ById4.id.et2pin10; te:tSpinD ( 'e:t3ie+0 ,ind3ie+ById4.id.et2pin!0;
asalist ( new Arrayist8OotaAsal0; tuuanist ( new Arrayist8Oota'uuan0; // spinner item select listener spinnerOotaAsal.setnItemSelectedistenerthis0; spinnerOota'uuan.setnItemSelectedistenerthis0; // Add ne+ cate1ory click event 2tnariJad+al.setnlickistenernew 3ie+.nlickistener0 { -verride public void onlick3ie+ v0 { new ariJad+al0.e:ecute0; 7 70; new &etAsal0.e:ecute0; new &et'uuan0.e:ecute0;
// m"ateButton ( Button0 ,ind3ie+ById4.id.date!2utton0; i2 ( Ima1eButton0 ,ind3ie+ById4.id.ima#e7utton10; cal ( alendar.#et*nstance0; day ( cal.1etalendar.+_4D_4%90; month ( cal.1etalendar.4%90; year ( cal.1etalendar.&)0; et ( $dit'e:t0 ,ind3ie+ById4.id.etan##al0; i2.setnlickistenernew 3ie+.nlickistener0 {
-verride public void onlick3ie+ v0 { sho+"ialo1)0; 7 70; 7 -verride -"eprecated protected "ialo1 onreate"ialo1int id0 { return new "atePicker"ialo1this6 datePickeristener6 year6 month6 day0; 7 private "atePicker"ialo1.n"ateSetistener datePickeristener ( new "atePicker"ialo1.n"ateSetistener0 { public void on"ateSet"atePicker vie+6 int selected#ear6 int selected>onth6 int selected"ay0 { et.set'e:tselected#ear C K?K C selected>onth C 0 C K?K C selected"ay0; 7 7;
/** * Addin1 spinner data * */ private void populateSpinnerAsal0 { ist8Strin1 la2les ( new Arrayist8Strin10;
for int i ( ); i 8 asalist.si@e0; iCC0 { la2les.addasalist.1eti0.1et%ame00; 7
// reatin1 adapter ,or spinner ArrayAdapter8Strin1 spinnerAdapter ( new ArrayAdapter8Strin1this6 android.4.layout.simple_spinner_item6 la2les0; // "rop do+n layout style ? list vie+ +ith radio 2utton spinnerAdapter .set"rop"o+n3ie+4esourceandroid.4.layout.simple_spinner_dropdown_item0; // attachin1 data adapter to spinner 7
spinnerOotaAsal.setAdapterspinnerAdapter0;
private void populateSpinner'uuan0 { ist8Strin1 la2lesD ( new Arrayist8Strin10;
for int i ( ); i 8 tuuanist.si@e0; iCC0 { la2lesD.addtuuanist.1eti0.1et%ame00; 7
// reatin1 adapter ,or spinner ArrayAdapter8Strin1 spinnerAdapter ( new ArrayAdapter8Strin1this6 android.4.layout.simple_spinner_item6 la2lesD0; // "rop do+n layout style ? list vie+ +ith radio 2utton spinnerAdapter .set"rop"o+n3ie+4esourceandroid.4.layout.simple_spinner_dropdown_item0; // attachin1 data adapter to spinner spinnerOota'uuan.setAdapterspinnerAdapter0; 7 /** * Async task to 1et all kota asal * */ private class &etAsal extends Async'ask83oid6 3oid6 3oid { -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1Jad+alActivity.this0; p"ialo1.set>essa1eK>en1am2il "ata Oota Asal..K0; p"ialo1.setancela2lefalse0; p"ialo1.sho+0; 7 -verride protected 3oid doInBack1round3oid... ar1)0 { ServiceHandler sonParser ( new ServiceHandler0; Strin1 son ( sonParser.makeServiceallL4!O'A!ASA6 ServiceHandler.(&0; o1.eK4esponse< K6 K K C son0; if son E( null0 { try { JS%2ect son2 ( new JS%2ectson0; if son2 E( null0 { JS%Array cate1ories ( son2 .1etJS%ArrayKasalK0;
for int i ( ); i 8 cate1ories.len1th0; iCC0
{
JS%2ect cat2 ( JS%2ect0 cate1ories.1eti0; OotaAsal cat ( new OotaAsalcat2.1etIntKidK06 cat2.1etStrin1KkotaK00; asalist.addcat0; 7 7
7 catch JS%$:ception e0 { e.printStack'race0; 7 7 else { o1.eKJS% "ataK6 K"idnGt receive any data ,rom serverEK0; 7 return null;
7 -verride protected void onPost$:ecute3oid result0 { super.onPost$:ecuteresult0; if p"ialo1.isSho+in100 p"ialo1.dismiss0; populateSpinnerAsal0; 7 7 /** * Async task to 1et all kota asal * */ private class &et'uuan extends Async'ask83oid6 3oid6 3oid { -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1D ( new Pro1ress"ialo1Jad+alActivity.this0; p"ialo1D.set>essa1eK>en1am2il "ata Oota 'uuan..K0; p"ialo1D.setancela2lefalse0; p"ialo1D.sho+0; 7 -verride protected 3oid doInBack1round3oid... ar1)0 { ServiceHandler sonParser ( new ServiceHandler0; Strin1 son ( sonParser.makeServiceallL4!O'A!'LJLA%6 ServiceHandler.(&0; o1.eK4esponse< K6 K K C son0; if son E( null0 { try { JS%2ect son2 ( new JS%2ectson0; if son2 E( null0 { JS%Array tu ( son2 .1etJS%ArrayKtuuanK0;
for int i ( ); i 8 tu.len1th0; iCC0 {
JS%2ect cat2 ( JS%2ect0 tu.1eti0; Oota'uuan cat ( new Oota'uuancat2.1etIntKidK06 cat2.1etStrin1KkotaK00; tuuanist.addcat0; 7 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 7 else { o1.eKJS% "ataK6 K"idnGt receive any data ,rom serverEK0; 7 return null;
7 -verride protected void onPost$:ecute3oid result0 { super.onPost$:ecuteresult0; if p"ialo1D.isSho+in100 p"ialo1D.dismiss0; populateSpinner'uuan0; 7 7
class ariJad+al extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1Jad+alActivity.this0; p"ialo1.set>essa1eK>encari Jad+al...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success;
Strin1 id!asal ( te:tSpin.1et'e:t0.toStrin10; Strin1 id!tuuan ( te:tSpinD.1et'e:t0.toStrin10; Strin1 tan11al ( et.1et'e:t0.toStrin10; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKid!asalK6 id!asal00;
params.add Basic%ame3aluePairKid!tuuanK6 id!tuuan00; params.addnew new Basic%ame3aluePairKtan11alK6 tan11al00; o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 6)*_>+A6 KPS'K6 params0; // check your lo1 ,or son response o1.dKo1in attemptK6 son.toStrin100; // son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { o1.dKPencarian ad+al SuksesEK6 son.toStrin100; // kirim idmem ke activity 2erikutnya Intent in ( new Intent1etApplicationonte:t06 istJad+al.class0; // kirim idmem ke activity 2erikutnya in.put$:traKid!asalK6 id!asal0; in.put$:traKid!tuuanK6 id!tuuan0; in.put$:traKtan11alK6 tan11al0; startActivityin0; ,inish0; return son.1etStrin1(_&22(&0; 7else{ o1.dKPencarian ad+al 1a1alEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeetJad+alActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7
7 7 -verride public void onItemSelectedAdapter3ie+89 parent6 3ie+ vie+6 int position6 long id0 {
switchparent.1etId00{ case 4.id.spinsal< 'oast.makeet 1etApplicationonte:t06
parent.1etItemAtPositionposition0.toStrin10 C K SelectedK 6 'oast.&%(9_4%(0.sho+0; Strin1 myStr ( spinnerOotaAsal.1etSelectedItem0.toStrin10; te:tSpin.set'e:tmyStr0; break; case 4.id.spinuCuan< 'oast.makeet
1etApplicationonte:t06 parent.1etItemAtPositionposition0.toStrin10 C K SelectedK 6 'oast.&%(9_4%(0.sho+0; Strin1 myStrD ( spinnerOota'uuan.1etSelectedItem0.toStrin10; te:tSpinD.set'e:tmyStrD0; break;
7 7 -verride public void on%othin1SelectedAdapter3ie+89 ar1)0 { 7 -verride public boolean onreateptions>enu>enu menu0 { >enuIn,later in,later ( 1et>enuIn,later0; in,later.in,late4.menu.items6 menu0; return super.onreateptions>enumenu0;
7 -verride public boolean onptionsItemSelected>enuItem item0 { super.onptionsItemSelecteditem0; switchitem.1etItemId00{ case 4.id.home< Intent i ( null; i ( new IntentJad+alActivity.this6 >enu>em2er.class0; ,inish0;
break; 7 return true;
7 7
0otaAsal.ja!a package com.dharma.pemesanan; public class OotaAsal { private int id; private Strin1 name; public OotaAsal0{7 public OotaAsalint id6 Strin1 name0{ this.id ( id; this.name ( name; 7 public void setIdint id0{ this.id ( id;
7 public void set%ameStrin1 name0{ this.name ( name; 7 public int 1etId0{ return this.id; 7 public Strin1 1et%ame0{ return this.name; 7 }
0otaTujuan.ja!a package com.dharma.pemesanan; public class Oota'uuan { private int id; private Strin1 name; public Oota'uuan0{7 public Oota'uuanint id6 Strin1 name0{
this.id ( id; this.name ( name;
7 public void setIdint id0{ this.id ( id; 7
public this void.name set%ameStrin1 name0{ ( name; 7 public int 1etId0{ return this.id; 7 public Strin1 1et%ame0{ return this.name; 7 }
jadwal.#ml 89:ml version("1.0" encodin1("utf-8"9 8Scroll3ie+ :mlnsadwal" android
android
8E?? ink to Hasil Pencarian Screen ?? 8Button android
androidadwal" / 8/inearayout
#croll$iew>
,.
'ist adwal
Setelah member memasukkan kota asal, kota tu"uan dan tanggal keberangkatan dan mencari "adwal yang ada. 9aka activity akan diarahkan ke list "adwal yang tersedia, artinya "ika pencarian menemukan "adwal maka akan tampil activity ini.
+.,3. Tampilan Acti!it" 'ist jadwal "ang dicari
%ile $istJadwal."ava memanfaatkan file list)"adwal.php untuk mengirimkan data sesuai yang diinput pada aplikasi android.
'istadwal.ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect;
import import import import import import import import import import import import import
android.app.istActivity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.+id1et.Adapter3ie+; android.+id1et.Adapter3ie+.nItemlickistener; android.+id1et.istAdapter; android.+id1et.ist3ie+; android.+id1et.SimpleAdapter; android.+id1et.'e:t3ie+;
public class istJad+al extends istActivity {
// Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1; // >em2uat o2ek JS%Parser JS%Parser Parser ( new JS%Parser0; Arrayist8Hash>ap8Strin16 Strin1 ad+alist; // inisialisasi url semuan11ota.php private static Strin1 url_cari_Cadwal ( Khttp/).).D.D/android!tiket/list!ad+al.phpK; // inisialisasi nama node dari son yan1 dihasilkan oleh php private static final Strin1 (_2$?2&2 ( KsuksesK; private static final Strin1 (_>+A ( Kad+alK; private static final Strin1 (_*+ ( KidK; private static final Strin1 (_> ( K2eran1katK; private static final Strin1 (_2 ( KasalK; private static final Strin1 (_$>$% ( KtuuanK; private static final Strin1 (_%(( ( Ktan11alK; private static final Strin1 (_,&2% ( KpesanK; private static final Strin1 (_9)( ( Khar1aK; private static final Strin1 (_2& ( KseatK;
Strin1 asal6tuuan6tan11al; // 2uat JS%Array mem2er JS%Array ad+al ( null; -verride public void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.list_hasil0; // Hashmap untuk ist3ie+ ad+alist ( new Arrayist8Hash>ap8Strin16 Strin10; // am2il listvie+ ist3ie+ lv ( 1etist3ie+0; // 2uat method untuk menampilkan data pada Back1round 'hread new ariJad+al0.e:ecute0; // pada saat men1klik salah satu nama mem2er // lalu alihkan pada class $ditan11otaActivity lv.setnItemlickistenernew nItemlickistener0 {
Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1
-verride public void onItemlickAdapter3ie+89 parent6 3ie+ vie+6 int position6 long id0 { // am2il nilai dari istItem yan1 dipilih idad+al ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.id00.1et'e:t0.toStrin10; asal ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.asal00.1et'e:t0.toStrin10; tuuan ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.tuCuan00.1et'e:t0.toStrin10; tan11al ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.tan##al00.1et'e:t0.toStrin10; har1a ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.har#a00.1et'e:t0.toStrin10; am ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.Cam00.1et'e:t0.toStrin10; seat ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.sisa00.1et'e:t0.toStrin10;
// Startin1 ne+ intent Intent in ( new Intent1etApplicationonte:t06 pesanActivity.class0; // kirim idmem ke activity 2erikutnya in.put$:traKidad+alK6 idad+al0; in.put$:traKasalK6 asal0; in.put$:traKtuuanK6 tuuan0; in.put$:traKtan11alK6 tan11al0; in.put$:traKhar1aK6 har1a0; in.put$:traKamK6 am0; in.put$:traKseatK6 seat0; // mulai activity 2aru dan dapatkan respon den1an result kode )) startActivity=or4esultin6 ))0; 7 70; 7 // 4espon dari $dit an11ota Activity
-verride protected void onActivity4esultint reFuestode6 int resultode6 Intent data0 { super.onActivity4esultreFuestode6 resultode6 data0; // ika result code )) if resultode (( ))0 { // ika result code )) diterima // artinya user men1edit/men1hapus mem2er
// reload layar ini la1i Intent intent ( 1etIntent0; ,inish0; startActivityintent0; 7 7 /** * Back1round Async 'ask untuk menampilkan semua data an11ota den1an H''P 4eFuest * */ class ariJad+al extends Async'ask8Strin16 Strin16 Strin1 { /** * se2elum memulai 2ack1round thread tampilkan Pro1ress "ialo1 * */ -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1istJad+al.this0; p"ialo1.set>essa1eK>en1am2il "ata hasil pencarian. Silahkan 'un11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2lefalse0; p"ialo1.sho+0; 7 /** * men1am2il semua data an11ota/mem2er dari url * */ protected Strin1 doInBack1roundStrin1... ar1s0 { // mem2an1un Parameter Intent in ( 1etIntent0; // am2il mem2er id idmem0 dari intent asal ( in.1etStrin1$:traKid!asalK0; tuuan ( in.1etStrin1$:traKid!tuuanK0; tan11al ( in.1etStrin1$:traKtan11alK0;
ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKasalK6 asal00; params.addnew Basic%ame3aluePairKtuuanK6 tuuan00; params.addnew Basic%ame3aluePairKtan11alK6 tan11al00;
// am2il JS% strin1 dari L4 JS%2ect son ( Parser.makeHttp4eFuesturl_cari_Cadwal6 KPS'K6 params0; // cek lo1 cat untuk JS% reponse o1.dKSemua ad+al< K6 son.toStrin100;
try { // men1ecek untuk 'A& SLOS$S int sukses ( son.1etInt(_2$?2&20; if sukses (( 0 { // data ditemukan // men1am2il Array dari mem2er ad+al ( son.1etJS%Array(_>+A0;
// loopin1 data semua mem2er/an11ota for int i ( ); i 8 ad+al.len1th0; iCC0 { JS%2ect c ( ad+al.1etJS%2ecti0; // tempatkan setiap item son di varia2el Strin1 id ( c.1etStrin1(_*+0; Strin1 asal ( c.1etStrin1(_20; Strin1 tuuan ( c.1etStrin1(_$>$%0; Strin1 tan11al ( c.1etStrin1(_%((0; Strin1 am (c.1etStrin1(_>0; Strin1 har1a (c.1etStrin1(_9)(0; Strin1 seat (c.1etStrin1(_2&0;
// 2uat ne+ Hash>ap Hash>ap8Strin16 Strin1 map ( new Hash>ap8Strin16 Strin10; // menam2ah setiap child node ke Hash>ap key ( value map.put(_*+6 id0; map.put(_26 asal0; map.put(_$>$%6 tuuan0; map.put(_%((6 tan11al0; map.put(_>6 am0; map.put(_9)(6 har1a0; map.put(_2&6 seat0;
// menam2ah Hashist ke Arrayist ad+alist.addmap0; 7 7 else{ o1.dKPencarian ad+al 1a1alEK6 son.1etStrin1(_,&2%00; return son.1etStrin1(_,&2%0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * setelah menyelesaikan 2ack1round task hilan1kan the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // hilan1kan dialo1 setelah mendapatkan semua data mem2er p"ialo1.dismiss0; // update LI dari Back1round 'hread runnLi'hreadnew 4unna2le0 { public void run0 { /** * update hasil parsin1 JS% ke ist3ie+ * */ istAdapter adapter ( new SimpleAdapter istJad+al.this6 ad+alist6 4.layout.list_item6 new Strin1MN { (_*+6(_26(_$>$%6(_%((6 (_>6 (_9)(6 (_2&76 new intMN { 4.id.id6 4.id.asal64.id.tuCuan64.id.tan##al64.id.Cam6 4.id.har#a6 4.id.sisa 70; // update listvie+ setistAdapteradapter0; 7 70; 7 7 7
list_hasil.#ml 89:ml version("1.0" encodin1("utf-8"9 8inearayout :mlnsain ist3ie+ Jan1an lupa selalu 2erikan id value se2a1ai list-android
8/inearayout
1.
$enampilkan Detail adwal 4ang dipilih
Setelah memilih salah satu "adwal keberangkatan bus, maka member akan diarahkan pada activity detail dari "adwal yang dipilih.
+.,5. Tampilan Acti!it" Detail jadwal "ang dipilih
)esanActi!it".ja!a package com.dharma.pemesanan; import import import import import import import
android.app.Activity; android.content.Intent; android.os.Bundle; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button; android.+id1et.'e:t3ie+;
public class pesanActivity extends Activity implements nlickistener {
//$dit'e:t t:tIdJad+al; private Button mPesan; 'e:t3ie+ t:tI"; 'e:t3ie+ t:tAsal; 'e:t3ie+ t:t'uuan; 'e:t3ie+ t:t'an11al; 'e:t3ie+ 'e:t3ie+ t:tJam; t:tHar1a; 'e:t3ie+ t:tSeat;
Button 2tnPesan; -verride public void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.pesan0;
// inisialisasi 2utton mPesan ( Button0 ,ind3ie+ById4.id.btn,esan0; t:tI" ( 'e:t3ie+0 ,ind3ie+ById4.id.et*+0; t:tAsal ( 'e:t3ie+0 ,ind3ie+ById4.id.etsal0; t:t'uuan ( 'e:t3ie+0 ,ind3ie+ById4.id.etuCuan0; t:t'an11al ( 'e:t3ie+0 ,ind3ie+ById4.id.etan##al0; t:tJam ( 'e:t3ie+0 ,ind3ie+ById4.id.et>am0; t:tHar1a ( 'e:t3ie+0 ,ind3ie+ById4.id.et9ar#a0; t:tSeat ( 'e:t3ie+0 ,ind3ie+ById4.id.et2eat0;
// am2il data an11ota detail dari intent Intent i ( 1etIntent0; // am2il mem2er id idmem0 dari intent Strin1 idad+al ( i.1etStrin1$:traKidad+alK0; Strin1 asal ( i.1etStrin1$:traKasalK0; Strin1 tuuan ( i.1etStrin1$:traKtuuanK0; Strin1 tan11al ( i.1etStrin1$:traKtan11alK0; Strin1 am ( i.1etStrin1$:traKamK0; Strin1 har1a ( i.1etStrin1$:traKhar1aK0; Strin1 seat ( i.1etStrin1$:traKseatK0;
t:tI".set'e:tidad+al0; t:tAsal.set'e:tasal0; t:t'uuan.set'e:ttuuan0; t:t'an11al.set'e:ttan11al0; t:tJam.set'e:tam0; t:tHar1a.set'e:thar1a0; t:tSeat.set'e:tseat0; mPesan.setnlickistenerthis0;
7 -verride public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn,esan< Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1
idad+al ( t:tI".1et'e:t0.toStrin10; asal ( t:tAsal.1et'e:t0.toStrin10; tuuan( t:t'uuan.1et'e:t0.toStrin10; tan11al ( t:t'an11al.1et'e:t0.toStrin10; am ( t:tJam.1et'e:t0.toStrin10; har1a ( t:tHar1a.1et'e:t0.toStrin10; seat ( t:tSeat.1et'e:t0.toStrin10;
Intent in ( new Intent1etApplicationonte:t06 pesanon,irmActivity.class0; // kirim idmem ke activity 2erikutnya in.put$:traKidad+alK6 idad+al0; in.put$:traKasalK6 asal0; in.put$:traKtuuanK6 tuuan0; in.put$:traKtan11alK6 tan11al0; in.put$:traKhar1aK6 har1a0; in.put$:traKamK6 am0; in.put$:traKseatK6 seat0; ,inish0; startActivityin0; break; default< break; 7
7
7
pesan.Vml
8inearayout :mlns
8inearayout android
"wrap_content" android
android
"wrap_content" androidam 7eran#kat : " androidam" android
android
"wrap_content" android
android
8Button android
"fill_parent" android
2.
0onfirmasi adwal 4ang dipilih
Setalah melihat detail "adwal dan mengklik tombol pesan tiket, maka setelah itu akan diarahkan ke activity konfirmasi pemesanan tiket. isini user harus menginput nama, nomor telpon dan "umlah tiket yang dipesan. Jika tiket yang dipesan melebihi kapasitas atau seat yang tersedia, maka system akan memberitahu bahwa seat yang ada tidak mencukupi untuk dipesan.
+.,6. Tampilan Acti!it" konfirmasi jadwal "ang dipilih pesanConfirmActi!it".ja!a package com.dharma.pemesanan; import import import import import import import import
android.app.Activity; android.content.Intent; android.os.Bundle; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button; android.+id1et.$dit'e:t; android.+id1et.'e:t3ie+;
public class pesanon,irmActivity extends Activity implements nlickistener { //$dit'e:t t:tIdJad+al; $dit'e:t t:t%ama; $dit'e:t t:t'elpon; $dit'e:t t:tJumlah; 'e:t3ie+ t:tAsal; 'e:t3ie+ t:t'uuan; 'e:t3ie+ t:t'an11al; 'e:t3ie+ t:tHar1a; 'e:t3ie+ t:tI";
'e:t3ie+ t:tSeat; Button 2tnSimpan; -verride public void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.pesan_confirm0; 2tnSimpan ( Button0 ,ind3ie+ById4.id.btn2impan0; t:t%ama ( $dit'e:t0 ,ind3ie+ById4.id.et%ama0; t:t'elpon ( $dit'e:t0 ,ind3ie+ById4.id.etelpon0; t:tJumlah ( $dit'e:t0 ,ind3ie+ById4.id.et>umlah0; t:tAsal ( 'e:t3ie+0 ,ind3ie+ById4.id.etsal0; t:t'uuan ( 'e:t3ie+0 ,ind3ie+ById4.id.etuCuan0; t:t'an11al ( 'e:t3ie+0 ,ind3ie+ById4.id.etan##al0; t:tHar1a ( 'e:t3ie+0 ,ind3ie+ById4.id.et9ar#a0; t:tI" ( 'e:t3ie+0 ,ind3ie+ById4.id.et*+0; t:tSeat ( 'e:t3ie+0 ,ind3ie+ById4.id.et2eat0; Intent i ( 1etIntent0; Strin1 Strin1 Strin1 Strin1 Strin1 Strin1
idad+al ( i.1etStrin1$:traKidad+alK0; asal ( i.1etStrin1$:traKasalK0; tuuan ( i.1etStrin1$:traKtuuanK0; tan11al ( i.1etStrin1$:traKtan11alK0; seat ( i.1etStrin1$:traKseatK0; har1a ( i.1etStrin1$:traKhar1aK0;
t:tAsal.set'e:tasal0; t:t'uuan.set'e:ttuuan0; t:t'an11al.set'e:ttan11al0; t:tHar1a.set'e:thar1a0; t:tI".set'e:tidad+al0; t:tSeat.set'e:tseat0; 2tnSimpan.setnlickistenerthis0; 7 -verride public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn2impan< Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1
asal ( t:tAsal.1et'e:t0.toStrin10; tuuan( t:t'uuan.1et'e:t0.toStrin10; tan11al ( t:t'an11al.1et'e:t0.toStrin10; nama ( t:t%ama.1et'e:t0.toStrin10; telpon ( t:t'elpon.1et'e:t0.toStrin10; umlah ( t:tJumlah.1et'e:t0.toStrin10; har1a ( t:tHar1a.1et'e:t0.toStrin10; idad+al ( t:tI".1et'e:t0.toStrin10; seat ( t:tSeat.1et'e:t0.toStrin10;
Intent in ( new Intent1etApplicationonte:t06 dataPesanActivity.class0; // kirim idmem ke activity 2erikutnya in.put$:traKasalK6 asal0; in.put$:traKtuuanK6 tuuan0; in.put$:traKtan11alK6 tan11al0; in.put$:traKnamaK6 nama0; in.put$:traKtelponK6 telpon0; in.put$:traKumlahK6 umlah0; in.put$:traKhar1aK6 har1a0; in.put$:traKidad+alK6 idad+al0; in.put$:traKseatK6seat0; ,inish0; startActivityin0; break; default< break; 7
7
7
pesan_confirm.#ml 8inearayout :mlns
android
"%o.elpon/9," androidumlah iket" androidumlah" android
android
"10p" android
android
"#one" / android
8/inearayout
3.
impan )esanan
Setelah konfirmasi pesanan, activity berikutnya adalah activity untuk menyimpan data pesanan agar tersimpan di tabel pesanan. %ile activity ini memanfaatkan file simpanpesanan.php untuk proses pengiriman data JSON ke tabel pesan.
+.,+. Tampilan simpan pesanan data)esanActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.Activity; android.app.Pro1ress"ialo1;
import import import import import import import import import
android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button; android.+id1et.'e:t3ie+; android.+id1et.'oast;
public class dataPesanActivity extends Activity implements nlickistener { //$dit'e:t t:tIdJad+al; 'e:t3ie+ t:tI"; 'e:t3ie+ t:t%ama; 'e:t3ie+ t:t'elpon; 'e:t3ie+ t:tJumlah; 'e:t3ie+ t:tAsal; 'e:t3ie+ t:t'uuan;
'e:t3ie+ 'e:t3ie+ t:t'an11al; t:t'otal; 'e:t3ie+ t:tSeat; Button 2tnSimpan; Button 2tnBatal; // Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1; // JS% parser class JS%Parser sonParser ( new JS%Parser0; private static final Strin1 2*,%_,&2%_$) ( Khttp/).).D.D/android!tiket/simpanpesanan.phpK;
//JS% element private static private static Session>ana1er
ids ,rom repsonse o, php script< final Strin1 (_2$66&22 ( KsuccessK; final Strin1 (_&22(& ( Kmessa1eK; session;
-verride public void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.data_pesan0; session ( new Session>ana1er1etApplicationonte:t00; 2tnSimpan ( Button0 ,ind3ie+ById4.id.btn2impan0; 2tnBatal ( Button0 ,ind3ie+ById4.id.btn7atal0; t:t%ama ( 'e:t3ie+0 ,ind3ie+ById4.id.et%ama0; t:t'elpon ( 'e:t3ie+0 ,ind3ie+ById4.id.etelpon0; t:tJumlah ( 'e:t3ie+0 ,ind3ie+ById4.id.et>umlah0; t:tAsal ( 'e:t3ie+0 ,ind3ie+ById4.id.etsal0; t:t'uuan ( 'e:t3ie+0 ,ind3ie+ById4.id.etuCuan0; t:t'an11al ( 'e:t3ie+0 ,ind3ie+ById4.id.etan##al0; t:t'otal ( 'e:t3ie+0 ,ind3ie+ById4.id.etotal0; t:tI" ( 'e:t3ie+0 ,ind3ie+ById4.id.et*+0; t:tSeat( 'e:t3ie+0 ,ind3ie+ById4.id.et2eat0; Intent i ( 1etIntent0; Strin1 Strin1 Strin1 Strin1
idad+al ( i.1etStrin1$:traKidad+alK0; asal ( i.1etStrin1$:traKasalK0; tuuan ( i.1etStrin1$:traKtuuanK0; tan11al ( i.1etStrin1$:traKtan11alK0;
Strin1 nama ( i.1etStrin1$:traKnamaK0; Strin1 telpon ( i.1etStrin1$:traKtelponK0; Strin1 umlah ( i.1etStrin1$:traKumlahK0; Strin1 har1a ( i.1etStrin1$:traKhar1aK0; Strin1 seat ( i.1etStrin1$:traKseatK0; t:tAsal.set'e:tasal0; t:t'uuan.set'e:ttuuan0; t:t'an11al.set'e:ttan11al0; t:t%ama.set'e:tnama0; t:t'elpon.set'e:ttelpon0; t:tJumlah.set'e:tumlah0; t:tI".set'e:tidad+al0; t:tSeat.set'e:tseat0; int har1atiket ( Inte1er.parse*ntStrin1.value4fhar1a00; int umlah2eli ( Inte1er.parse*ntStrin1.value4ft:tJumlah.1et'e:t000; int Hasil ( har1atiket*umlah2eli;
t:t'otal.set'e:tStrin1.value4fHasil00;
2tnSimpan.setnlickistenerthis0; 2tnBatal.setnlickistenerthis0; 7
public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn2impan< new SimpanPesanan0.e:ecute0; break; case 4.id.btn7atal< Intent i ( new Intentthis6 >enu>em2er.class0; startActivityi0; ,inish0; break; default< break;
7 7 class SimpanPesanan extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 {
super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1dataPesanActivity.this0; p"ialo1.set>essa1eK>enyimpan "ata Pesanan...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0;
7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; Strin1 idad+al ( t:tI".1et'e:t0.toStrin10; Strin1 nama ( t:t%ama.1et'e:t0.toStrin10; Strin1 telpon ( t:t'elpon.1et'e:t0.toStrin10; Strin1 total ( t:t'otal.1et'e:t0.toStrin10; Strin1 Fty ( t:tJumlah.1et'e:t0.toStrin10; Strin1 status ( KBelumK;
Intent in ( 1etIntent0; session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0; Strin1 seat( in.1etStrin1$:traKseatK0;
try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKidad+alK6 idad+al00; params.addnew Basic%ame3aluePairKnamaK6 nama00; params.addnew Basic%ame3aluePairKtelponK6 telpon00; params.addnew Basic%ame3aluePairKFtyK6 Fty00; params.addnew Basic%ame3aluePairKstatusK6 status00; params.addnew Basic%ame3aluePairKtotalK6 total00; params.addnew Basic%ame3aluePairKusernameK6 username00;
params.addnew Basic%ame3aluePairKseatK6 seat00; o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 2*,%_,&2%_$)6 KPS'K6 params0; // check your lo1 ,or son response o1.dKo1in attemptK6 son.toStrin100;
// son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { o1.dKPesanan Berhasil disimpanEK6 son.toStrin100; Intent i ( new IntentdataPesanActivity.this6 SuksesPesanActivity.class0; ,inish0; return startActivityi0; son.1etStrin1(_&22(&0; 7else{ o1.dKPenyimpanan 1a1alEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeetdataPesanActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7 7 7 7
data_pesan.#ml 8inearayout :mlns
8'e:t3ie+ android
8/inearayout 8inearayout androidumlah iket" androidumlah" android
android
android
"10p" android
5.
ukses $en"impan )esanan
Setelah berhasil menyimpan pesanan, maka aplikasi akan kita arahkan ke activity sukses pesanan, sekaligus pemberitahuan nomor rekening pesanan.
+.,7. ukses pesanan
ukses)esanActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect;
import import import import import import import import import
android.app.Activity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button;
import android.+id1et.'e:t3ie+; import android.+id1et.'oast; public class SuksesPesanActivity extends Activity implements nlickistener{ 'e:t3ie+ t:tSukses; Button 2tnSelesai; Pro1ress"ialo1 p"ialo1; Session>ana1er session;
// JS% parser class JS%Parser sonParser ( new JS%Parser0; private static final Strin1 2&&2*_,&2%_$) ( Khttp/).).D.D/android!tiket/selesaipesan.phpK;
//JS% element private static private static private static private static private static
ids ,rom repsonse o, php script< final Strin1 (_2$66&22 ( KsuksesK; final Strin1 (_&22(& ( KpesanK; final Strin1 (_4)+&) ( KselesaiK; final Strin1 (_*+_4)+&) ( KidK; final Strin1 (_4 ( KtotalK;
-verride public void onreateBundle savedInstanceState0 { super.onreatesavedInstanceState0; setontent3ie+4.layout.sukses_pesan0; session ( new Session>ana1er1etApplicationonte:t00; 2tnSelesai ( Button0 ,ind3ie+ById4.id.btn2elesai0; new SelesaiPesan0.e:ecute0; 2tnSelesai.setnlickistenerthis0; 7 public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn2elesai< Intent i ( new Intentthis6 >enu>em2er.class0; startActivityi0; ,inish0; break; default< break;
7 7
class SelesaiPesan extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super .onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1SuksesPesanActivity.this0; p"ialo1.set>essa1eK>enun11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0;
7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00;
o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 2&&2*_,&2%_$)6 K&$'K6 params0; // check your lo1 ,or son response o1.dKoadin1K6 son.toStrin100; // son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { // sukses men1am2il detail an11ota JS%Array mem2er2 ( son.1etJS%Array(_4)+&)0;
// JS% Array // am2il o2ek mem2er pertama dari JS% Array final JS%2ect selesai ( mem2er2.1etJS%2ect)0; // update LI dari Back1round 'hread runnLi'hreadnew 4unna2le0 {
public void run0 {
// mem2er den1an idmem yan1 ditemukan // $dit 'e:t t:tSukses ( 'e:t3ie+0 ,ind3ie+ById4.id.et2ukses0; try { // tampilkan data mem2er di $dit'e:t
t:tSukses.set'e:tKAnda telah 2erhasil0C K melakukan pemesanan tiket den1an rder I" ( KC selesai.1etStrin1 . (_*+_4)+&) Silahkan melakukan pem2ayaran den1an cara mentrans,er se2esar 4p. KC selesai.1etStrin1(_40CK ke nomor rekenin1 BA atas nama Akhmad "harma Oasman6 no rekenin1 )QR den1an menye2utkan I" pesanan. Anda memiliki +aktu D hari untuk melakukan pem2ayaran6 ika dalam dua hari tidak melakukan pem2ayaran maka pemesanan tiket akan otomatis dihapus. K C K'erimakasih telah men11unakan layanan kami..K C KP "harmaK0; 7 catch JS%$:ception e0 { // !D! Auto?1enerated catch 2lock e.printStack'race0; 7 7 70; 7else{ o1.dKPesanan 1a1alEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeetSuksesPesanActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7 7 7
7
sukses_pesan.#ml 8inearayout :mlns
8'e:t3ie+ android
6.
)embatalan )emesanan
+.18. )embatalan )emesanan
BatalActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.Activity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask;
import import import import import import import import
android.os.Bundle; android.util.o1; android.vie+.>enu; android.vie+.>enuIn,later; android.vie+.>enuItem; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button;
import android.+id1et.$dit'e:t; import android.+id1et.'oast; public class BatalActivity extends Activity implements nlickistener {
Button 2tnO; Pro1ress"ialo1 p"ialo1; $dit'e:t t:tid6t:tnama; JS%Parser sonParser ( new JS%Parser0; // Session >ana1er lass Session>ana1er session; //JS% element ids ,rom repsonse o, php script< private static final Strin1 (_2$66&22 ( KsuccessK; private static final Strin1 (_&22(& ( Kmessa1eK; private static final Strin1 6)*_$) ( Khttp/).).D.D/android!tiket/cari!2atal.phpK;
protected void onreateBundle SavedInstanceState0 { super.onreateSavedInstanceState0; setontent3ie+4.layout.batal0;
session ( new Session>ana1er1etApplicationonte:t00; 2tnO ( Button0 ,ind3ie+ById4.id.btn4?0; t:tid ( $dit'e:t0,ind3ie+ById4.id.et*+0; t:tnama ( $dit'e:t0,ind3ie+ById4.id.et%ama0; 2tnO.setnlickistenerthis0;
7 public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn4?< new ariBatalPesan0.e:ecute0; break; default< break;
7
7 -verride public boolean onreateptions>enu>enu menu0 { >enuIn,later in,later ( 1et>enuIn,later0; in,later.in,late4.menu.items6 menu0; return super.onreateptions>enumenu0;
7 -verride public boolean onptionsItemSelected>enuItem item0 { super.onptionsItemSelecteditem0; switchitem.1etItemId00{ case 4.id.home< Intent i ( null; i ( new IntentBatalActivity.this6 >enu>em2er.class0; ,inish0; break; 7 return true;
7
class ariBatalPesan extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1BatalActivity.this0; p"ialo1.set>essa1eK>encari I" Pem2atalan...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name
Strin1 username ( user.1etSession>ana1er. ?&_%&0;
Strin1 id ( t:tid.1et'e:t0.toStrin10; Strin1 nama ( t:tnama.1et'e:t0.toStrin10; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.add id00; params.addnew new Basic%ame3aluePairKidK6 Basic%ame3aluePairKnamaK6 nama00; params.addnew Basic%ame3aluePairKusernameK6 username00; o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 6)*_$)6 KPS'K6 params0; // check your lo1 ,or son response o1.dKari I" BatalK6 son.toStrin100; // son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { o1.dKPencarian I" Success,ulEK6 son.toStrin100; Intent in ( new IntentBatalActivity.this6 on,irmBatal.class0; // kirim idmem ke activity 2erikutnya in.put$:traKusernameK6 username0; in.put$:traKidK6 id0; in.put$:traKnamaK6 nama0; ,inish0; startActivityin0; return son.1etStrin1(_&22(&0; 7else{ o1.dKo1in =ailureEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeetBatalActivity.this6 ,ile!url6 'oast.&%(9_4%(0.sho+0; 7 7
7 7
batal.#ml 84elativeayout :mlns
android
+.
9apus )embatalan )emesanan
Setelah mencari R pemesanan dan nama pemesan untuk dibatalkan, berikutnya akan kita arahkan ke activity hapus pemesanan. imana disini kita memanfaatkan dua buah file php, yaitu konfirm)batal.php dan hapus)pesan.php.
+.1-. 9apus )embatalan )emesanan ConfirmBatal.ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import import import import import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.Activity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.3ie+; android.vie+.3ie+.nlickistener; android.+id1et.Button;
import android.+id1et.'e:t3ie+; import android.+id1et.'oast; public class on,irmBatal extends Activity implements nlickistener{
'e:t3ie+ t:tI"; 'e:t3ie+ t:tAsal; 'e:t3ie+ t:t'uuan; 'e:t3ie+ t:t'otal; 'e:t3ie+ t:t'an11al; 'e:t3ie+ t:tJumlah; 'e:t3ie+ t:tStatus; Button 2tn#a; Button 2tn'idak; Pro1ress"ialo1 p"ialo1; // JS% parser class JS%Parser sonParser ( new JS%Parser0; // Session >ana1er lass Session>ana1er session; private static final Strin1 ?4%D*)_7_$) ( Khttp/).).D.D/android!tiket/kon,irm!2atal.phpK; private static final Strin1 9,$2_,&2%% ( Khttp/).).D.D/android!tiket/hapus!pesan.phpK;
//JS% element private static private static private static private static private static private static private static private static private static private static
ids ,rom repsonse o, php script< final Strin1 (_2$66&22 ( KsuksesK; final Strin1 (_&22(& ( KpesanK; final Strin1 (_7 ( K2atalK; final Strin1 (_*+ ( KidK; final Strin1 (_2 ( KasalK; final Strin1 (_$>$% ( KtuuanK; final Strin1 (_%(( ( Ktan11alK; final Strin1 (_4 ( KtotalK; final Strin1 (_>$9 ( KumlahK; final Strin1 (_2$2 ( KstatusK;
protected void onreateBundle SavedInstanceState0 { super.onreateSavedInstanceState0; setontent3ie+4.layout.confirm_batal0;
session ( new Session>ana1er1etApplicationonte:t00; 2tn#a ( Button0 ,ind3ie+ById4.id.btna0; 2tn'idak ( Button0 ,ind3ie+ById4.id.btnidak0; 2tn#a.setnlickistenerthis0; 2tn'idak.setnlickistenerthis0; new am2il"etailBatal0.e:ecute0; 7
public void onlick3ie+ v0 {
// !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btna< new BatalPesan0.e:ecute0; break; case 4.id.btnidak< Intent i ( new Intentthis6 >enu>em2er.class0; startActivityi0; ,inish0; break ; default< break;
7 7
class am2il"etailBatal extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1on,irmBatal.this0; p"ialo1.set>essa1eK>enun11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2 // heck ,or success ta1 int success; // am2il data an11ota detail dari intent Intent i ( 1etIntent0; session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0;
Strin1 id ( i.1etStrin1$:traKidK0; Strin1 nama ( i.1etStrin1$:traKnamaK0;
try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00; params.addnew Basic%ame3aluePairKidK6 id00; params.addnew Basic%ame3aluePairKnamaK6 nama00;
o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest ?4%D*)_7_$)6 K&$'K6 params0; // check your lo1 ,or son response o1.dKoadin1K6 son.toStrin100; // son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { // sukses men1am2il detail an11ota JS%Array mem2er2 ( son.1etJS%Array(_70; // JS% Array // am2il o2ek mem2er pertama dari JS% Array final JS%2ect 2atal ( mem2er2.1etJS%2ect)0; // update LI dari Back1round 'hread runnLi'hreadnew 4unna2le0 { public void run0 { // mem2er den1an idmem yan1 ditemukan // $dit 'e:t t:tI" ( 'e:t3ie+0,ind3ie+ById4.id.et*+0; t:tAsal ( 'e:t3ie+0,ind3ie+ById4.id.etsal0; t:t'uuan ( 'e:t3ie+0,ind3ie+ById4.id.etuCuan0; t:t'an11al ( 'e:t3ie+0,ind3ie+ById4.id.etan##al0; t:t'otal ( 'e:t3ie+0,ind3ie+ById4.id.etotal0; t:tJumlah ( 'e:t3ie+0,ind3ie+ById4.id.et>umlah0; t:tStatus ( 'e:t3ie+0,ind3ie+ById4.id.et2tatus0;
try { // tampilkan data mem2er di $dit'e:t t:tI".set'e:tKI" Pemesanan ( K C
2atal.1etStrin1(_*+00;
t:tAsal.set'e:tKOota Asal ( K C
2atal.1etStrin1(_200; t:t'uuan.set'e:tKOota 'uuan ( K C 2atal.1etStrin1(_$>$%00; t:t'an11al.set'e:tK'an11al Beran1kat ( K C 2atal.1etStrin1(_%((00; t:tStatus.set'e:tKStatus ( K C 2atal.1etStrin1(_2$20 CK di2ayarK0;
t:t'otal.set'e:tK'otal Bayar ( K C 2atal.1etStrin1(_400; t:tJumlah.set'e:tKJumlah 'iket ( K C 2atal.1etStrin1(_>$900;
7 catch JS%$:ception e0 { // !D! Auto?1enerated catch 2lock e.printStack'race0; 7 7 70; 7else{ o1.dKPesanan 1a1alEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; 7 7 /***************************************************************** * Back1round Async 'ask untuk men1hapus data pesanan * */ class BatalPesan extends Async'ask8Strin16 Strin16 Strin1 { /** * Se2elum memulai 2ack1round thread 'ampilkan Pro1ress "ialo1 * */ -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1on,irmBatal.this0; p"ialo1.set>essa1eK>em2atalkan pesanan...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0;
7 /** * men1hapus data an11ota
* */ protected Strin1 doInBack1roundStrin1... ar1s0 {
// cek sukses ta1 apakah atau )0 int sukses; Intent in ( 1etIntent0; // am2il mem2er id idmem0 dari intent Strin1 id ( in.1etStrin1$:traKidK0; try { // mem2an1un Parameter ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKidK6 id00;
// am2il mem2er/an11ota detail den1an reFuest H''Pt JS%2ect son ( sonParser.makeHttp4eFuest9,$2_,&2%%6 KPS'K6 params0; // cek lo1 untuk son respon o1.dKHapuskan PesananK6 son.toStrin100; // son sukses ta1 sukses ( son.1etInt(_2$66&220; if sukses (( 0 { Intent inte ( new Intenton,irmBatal.this6 >enu>em2er.class0; ,inish0; startActivityinte0; return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * Setelah hapus data selesai 2ack1round task akan men1hilan1kan pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss dialo1 setelah proses hapus selesai p"ialo1.dismiss0; if ,ile!url E( null0{ 'oast.makeeton,irmBatal.this6 ,ile!url6
'oast.&%(9_4%(0.sho+0; 7 7 7
7
confirm_batal.#ml 84elativeayout :mlns
8'e:t3ie+ android
android
";BBBBBB" androidumlah" android
androidumlah" android
"@id/btnidak" android
7.
Cek tatus )emba"aran
9ember bisa mengecek status pembayaran dengan melihat nomor pesannya apakah sudah lunas atau belum. Jika administrator sudah merubah status pembayaran dari sisi server 7P!P8, maka otomatis dari sisi android akan terlihat status bayarnya. Pada acitivity ini memanfaatkan file cek)status.php.
+.1,. Cek tatus )emba"aran
tatusActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import import import import import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.istActivity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.>enu; android.vie+.>enuIn,later; android.vie+.>enuItem;
import android.+id1et.istAdapter; import android.+id1et.SimpleAdapter;
public class StatusActivity extends istActivity { // Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1;
// >em2uat o2ek JS%Parser JS%Parser Parser ( new JS%Parser0; Session>ana1er session; Arrayist8Hash>ap8Strin16 Strin1 statusist; private static Strin1 url_cari_status ( Khttp/).).D.D/android!tiket/cek!status.phpK;
// inisialisasi nama node dari son yan1 dihasilkan oleh php private static final Strin1 (_2$2 ( KstatusK; private static final Strin1 (_*+ ( KidK; private static final Strin1 (_2 ( KasalK; private static final Strin1 (_$>$% ( KtuuanK; private static final Strin1 (_%(( ( Ktan11alK; private static final Strin1 (_4 ( KtotalK; private static final Strin1 (_2$?2&2 ( KsuksesK; private static final Strin1 (_,&2% ( KpesanK; // 2uat JS%Array mem2er JS%Array status ( null; protected void onreateBundle SavedInstanceState0 { super.onreateSavedInstanceState0; setontent3ie+4.layout.list_order_status0; //Hashmap untuk ist3ie+ statusist ( new Arrayist8Hash>ap8Strin16 Strin10; session ( new Session>ana1er1etApplicationonte:t00; // 2uat method untuk menampilkan data pada Back1round 'hread new ariStatus0.e:ecute0; 7 -verride public boolean onreateptions>enu>enu menu0 { >enuIn,later in,later ( 1et>enuIn,later0; in,later.in,late4.menu.items6 menu0; return super.onreateptions>enumenu0; 7 -verride public boolean onptionsItemSelected>enuItem item0 { super.onptionsItemSelecteditem0; switchitem.1etItemId00{
case 4.id.home< Intent i ( null; i ( new IntentStatusActivity.this6 >enu>em2er.class0; ,inish0; break;
7 return true;
7 /** * Back1round Async 'ask untuk menampilkan semua data an11ota den1an H''P 4eFuest * */ class ariStatus extends Async'ask8Strin16 Strin16 Strin1 { /** * se2elum memulai 2ack1round thread tampilkan Pro1ress "ialo1 * */ -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1StatusActivity.this0; p"ialo1.set>essa1eK>en1am2il "ata. Silahkan 'un11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2lefalse0; p"ialo1.sho+0; 7 /** * men1am2il semua data pemesann an11ota/mem2er dari url * */ protected Strin1 doInBack1roundStrin1... ar1s0 { session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0;
ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00;
// am2il JS% strin1 dari L4 JS%2ect son ( Parser.makeHttp4eFuesturl_cari_status6 KPS'K6 params0; // cek lo1 cat untuk JS% reponse o1.dKSemua Pesan< K6 son.toStrin100;
try {
// men1ecek untuk 'A& SLOS$S int sukses ( son.1etInt(_2$?2&20; if sukses (( 0 { // data ditemukan // men1am2il Array dari mem2er status ( son.1etJS%Array(_2$20;
// loopin1 data semua mem2er/an11ota for int i ( ); i 8 status.len1th0; iCC0 { JS%2ect c ( status.1etJS%2ecti0; // tempatkan setiap item son di varia2el Strin1 id ( K%omor I" Pesan < KCc.1etStrin1(_*+0; Strin1 asal ( KOota Asal < KC c.1etStrin1(_20; Strin1 tuuan ( KOota 'uuan< KCc.1etStrin1(_$>$%0; Strin1 tan11al ( K'an11al Pesan < KC c.1etStrin1(_%((0; Strin1 total ( K'otal Bayar < K Cc.1etStrin1(_40; Strin1 status ( KStatus < KCc.1etStrin1(_2$20C K "i2ayarK;
// 2uat ne+ Hash>ap Hash>ap8Strin16 Strin1 map ( new Hash>ap8Strin16 Strin10; // menam2ah setiap child node ke Hash>ap key ( value map.put(_*+6 id0; map.put(_26 asal0; map.put(_$>$%6 tuuan0; map.put(_%((6 tan11al0; map.put(_46 total0; map.put(_2$26 status0;
// menam2ah Hashist ke Arrayist statusist.addmap0; 7 7 else{ o1.dKPencarian ad+al 1a1alEK6 son.1etStrin1(_,&2%00; return son.1etStrin1(_,&2%0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * setelah menyelesaikan 2ack1round task hilan1kan the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // hilan1kan dialo1 setelah mendapatkan semua data mem2er p"ialo1.dismiss0; // update LI dari runnLi'hread new Back1round 4unna2le0 'hread { public void run0 { /** * update hasil parsin1 JS% ke ist3ie+ * */ istAdapter adapter ( new SimpleAdapter StatusActivity.this6 statusist6 4.layout.list_item_status6 new Strin1MN { (_*+6(_26(_$>$%6(_%((6 (_46 (_2$276 new intMN { 4.id.id6 4.id.asal64.id.tuCuan64.id.tan##al6 4.id.total6 4.id.status 70; // update listvie+ setistAdapteradapter0; 7 70; 7 7 7
list_order_status.#ml 89:ml version("1.0" encodin1("utf-8"9 8inearayout :mlnsain ist3ie+ Jan1an lupa selalu 2erikan id value se2a1ai list-android
-8. Bukti )emba"aran
Jika member sudah melunasi pembayaran tiket, maka pada menu ini member bisa melihat id pesanan yang sudah dibayar dan bisa dicetak. Activity ini memanfaatkan file cetak)bukti.php.
+.11. Daftar :rder "ang 'unas dan iap dicetak
BuktiActi!it".ja!a package com.dharma.pemesanan; import ava.util.Arrayist; import ava.util.Hash>ap; import ava.util.ist; import import import import import import import import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect; android.app.istActivity; android.app.Pro1ress"ialo1; android.content.Intent; android.os.Async'ask; android.os.Bundle; android.util.o1; android.vie+.>enu;
import import import import import import import import
android.vie+.>enuIn,later; android.vie+.>enuItem; android.vie+.3ie+; android.+id1et.Adapter3ie+; android.+id1et.Adapter3ie+.nItemlickistener; android.+id1et.istAdapter; android.+id1et.ist3ie+; android.+id1et.SimpleAdapter;
import android.+id1et.'e:t3ie+; public class BuktiActivity extends istActivity {
// Pro1ress "ialo1 private Pro1ress"ialo1 p"ialo1; // >em2uat o2ek JS%Parser JS%Parser Parser ( new JS%Parser0; Session>ana1er session; Arrayist8Hash>ap8Strin16 Strin1 cetakist; private static Strin1 url_cetak ( Khttp/).).D.D/android!tiket/cetak!2ukti.phpK;
// inisialisasi nama node dari son yan1 dihasilkan oleh php private static final Strin1 (_2$?2&2 ( KsuksesK; private static final Strin1 (_6&? ( KcetakK; private static final Strin1 (_*+ ( KidK; private static final Strin1 (_,&2% ( KpesanK; private static final Strin1 (_&5 ( K%omor rder I" < K; // 2uat JS%Array mem2er JS%Array cetak ( null; protected void onreateBundle SavedInstanceState0 { super.onreateSavedInstanceState0; setontent3ie+4.layout.list_cetak0; session ( new Session>ana1er1etApplicationonte:t00; //Hashmap untuk ist3ie+ cetakist ( new Arrayist8Hash>ap8Strin16 Strin10; // am2il listvie+ ist3ie+ lv ( 1etist3ie+0; // 2uat method untuk menampilkan data pada Back1round 'hread
session.checko1in0;
new arietak0.e:ecute0;
lv.setnItemlickistenernew nItemlickistener0 { -verride
public void onItemlickAdapter3ie+89 parent6 3ie+ vie+6 int position6 long id0 { // am2il nilai dari istItem yan1 dipilih Strin1 idad+al ( 'e:t3ie+0 vie+.,ind3ie+ById4.id.id00.1et'e:t0.toStrin10;
// 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0; // Startin1 ne+ intent Intent in ( new Intent1etApplicationonte:t06 cetak"etail.class0; // kirim idmem ke activity 2erikutnya in.put$:traKidad+alK6 idad+al0; in.put$:traKusernameK6 username0; // mulai activity 2aru dan dapatkan respon den1an result kode )) startActivity=or4esultin6 ))0; 7 70; 7 -verride public boolean onreateptions>enu>enu menu0 { >enuIn,later in,later ( 1et>enuIn,later0; in,later.in,late4.menu.items6 menu0; return super.onreateptions>enumenu0; 7 -verride public boolean onptionsItemSelected>enuItem item0 { super.onptionsItemSelecteditem0; switchitem.1etItemId00{ case 4.id.home< Intent i ( null; i ( new IntentBuktiActivity.this6 >enu>em2er.class0; ,inish0; break;
7 return true; 7
-verride protected void onActivity4esultint reFuestode6 int resultode6 Intent data0 { super.onActivity4esultreFuestode6 resultode6 data0; // ika result code ))
if resultode (( ))0 { Intent intent ( 1etIntent0; ,inish0; startActivityintent0; 7
7
/** * Back1round Async 'ask untuk menampilkan semua data an11ota den1an H''P 4eFuest * */ class arietak extends Async'ask8Strin16 Strin16 Strin1 { /** * se2elum memulai 2ack1round thread tampilkan Pro1ress "ialo1 * */ -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1BuktiActivity.this0; p"ialo1.set>essa1eK>en1am2il data. Silahkan 'un11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2lefalse0; p"ialo1.sho+0; 7 /** * men1am2il semua data an11ota/mem2er dari url * */ protected Strin1 doInBack1roundStrin1... ar1s0 { // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0;
ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00; // am2il JS% strin1 dari L4 JS%2ect son ( Parser.makeHttp4eFuesturl_cetak6 KPS'K6 params0; // cek lo1 cat untuk JS% reponse o1.dKSemua ad+al< K6 son.toStrin100;
try {
// men1ecek untuk 'A& SLOS$S int sukses ( son.1etInt(_2$?2&20; if sukses (( 0 { // data ditemukan
// men1am2il Array dari mem2er cetak ( son.1etJS%Array(_6&?0; // loopin1 data semua mem2er/an11ota for int i ( ); i 8 cetak.len1th0; iCC0 { JS%2ect c ( cetak.1etJS%2ecti0; // tempatkan setiap item son di varia2el Strin1 id ( c.1etStrin1(_*+0; // 2uat ne+ Hash>ap Hash>ap8Strin16 Strin1 map ( new Hash>ap8Strin16 Strin10; // menam2ah setiap child node ke Hash>ap key ( value map.put(_&56 (_&50; map.put(_*+6 id0; // menam2ah Hashist ke Arrayist cetakist.addmap0; 7 7 else{ o1.dKPencarian ad+al 1a1alEK6 son.1etStrin1(_,&2%00; return son.1etStrin1(_,&2%0;
7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * setelah menyelesaikan 2ack1round task hilan1kan the pro1ress dialo1 * **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // hilan1kan dialo1 setelah mendapatkan semua data mem2er p"ialo1.dismiss0; // update LI dari Back1round 'hread runnLi'hreadnew 4unna2le0 { public void run0 { /** * update hasil parsin1 JS% ke ist3ie+ * */ istAdapter adapter ( new SimpleAdapter BuktiActivity.this6 cetakist6 4.layout.list_item_cetak6 new Strin1MN {(_&56 (_*+76 new intMN {4.id.id6 4.id.id70; // update listvie+ setistAdapteradapter0;
7 70; 7 7 7
list_cetak.#ml 89:ml version("1.0" encodin1("utf-8"9 8inearayout :mlnsain ist3ie+ Jan1an lupa selalu 2erikan id value se2a1ai list-android
--. Detail dan Cetak Bukti )emba"aran )DF
Setelah member memilih id pesanan yang akan dicetak, activity akan mengarahkan ke activity detail pesanan yang akan dicetak. Activity ini memanfaatkan file detail)cetak.php.
+.12. Detail dan Cetak )esanan cetakDetail.a!a package com.dharma.pemesanan; import import import import import import import
ava.io.ByteArrayutputStream; ava.io.=ile; ava.io.=ileutputStream; ava.io.I$:ception; ava.util.Arrayist; ava.util.Hash>ap; ava.util.ist;
import import import import import
or1.apache.http.%ame3aluePair; or1.apache.http.messa1e.Basic%ame3aluePair; or1.son.JS%Array; or1.son.JS%$:ception; or1.son.JS%2ect;
import import import import
android.app.Activity; android.app.Pro1ress"ialo1; android.content.Activity%ot=ound$:ception; android.content.Intent;
import import import import import import import import
android.1raphics.Bitmap; android.1raphics.Bitmap=actory; android.net.Lri; android.os.Async'ask; android.os.Bundle; android.os.$nvironment; android.util.o1; android.vie+.3ie+;
import import import import
android.vie+.3ie+.nlickistener; android.+id1et.Button; android.+id1et.'e:t3ie+; android.+id1et.'oast;
import import import import import import
com.lo+a1ie.te:t."ocument; com.lo+a1ie.te:t."ocument$:ception; com.lo+a1ie.te:t.=ont; com.lo+a1ie.te:t.Ima1e; com.lo+a1ie.te:t.Para1raph; com.lo+a1ie.te:t.pd,.Pd,riter;
public class cetak"etail extends Activity implements nlickistener{
'e:t3ie+ t:tI"; 'e:t3ie+ t:t%ama; 'e:t3ie+ t:t'elpon; 'e:t3ie+ t:tAsal; 'e:t3ie+ t:t'uuan; 'e:t3ie+ t:t'otal; 'e:t3ie+ t:tHar1a; 'e:t3ie+ t:t'an11alBeran1kat; 'e:t3ie+ t:tJamBeran1kat; 'e:t3ie+ t:t'an11alPesan; 'e:t3ie+ t:tJumlah; Button 2tnetak; Pro1ress"ialo1 p"ialo1; // JS% parser class JS%Parser sonParser ( new JS%Parser0; Session>ana1er session; private static final Strin1 6&?_$) ( Khttp/).).D.D/android!tiket/detail!cetak.phpK;
//JS% element ids ,rom repsonse o, php script< private private private private private private private private private private
static static static static static static static static static static
final final final final final final final final final final
Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1 Strin1
(_2$66&22 ( KsuksesK; (_&22(& ( KpesanK; (_6&? ( KcetakK; (_*+ ( KidK; (_% ( KnamaK; (_&,4% ( KtelponK; (_2 ( KasalK; (_$>$% ( KtuuanK; (_%(( ( Ktan11alK; (_%((_7? ( Ktan11al!2eran1katK;
private private private private
static static static static
final final final final
Strin1 Strin1 Strin1 Strin1
(_> ( Kam!2eran1katK; (_4 ( KtotalK; (_>$9 ( KumlahK; (_9)( ( Khar1aK;
protected void onreateBundle SavedInstanceState0 { super .onreateSavedInstanceState0; setontent3ie+4.layout. cetak_detail0;
session ( new Session>ana1er1etApplicationonte:t00; 2tnetak ( Button0 ,ind3ie+ById4.id.btn6etak0; 2tnetak.setnlickistenerthis0; new am2il"etailetak0.e:ecute0; 7 public void onlick3ie+ v0 { // !D! Auto?1enerated method stu2 switch v.1etId00 { case 4.id.btn6etak< createP"=0; break; default< break;
7 7 class am2il"etailetak extends Async'ask8Strin16 Strin16 Strin1 {
/** * Be,ore startin1 2ack1round thread Sho+ Pro1ress "ialo1 * */ boolean ,ailure ( false; -verride protected void onPre$:ecute0 { super.onPre$:ecute0; p"ialo1 ( new Pro1ress"ialo1cetak"etail.this0; p"ialo1.set>essa1eK>enun11u...K0; p"ialo1.setIndeterminatefalse0; p"ialo1.setancela2letrue0; p"ialo1.sho+0; 7 -verride protected Strin1 doInBack1roundStrin1... ar1s0 { // !D! Auto?1enerated method stu2
// heck ,or success ta1 int success; // am2il data an11ota detail dari intent Intent i ( 1etIntent0; session.checko1in0; // 1et user data ,rom session Hash>ap8Strin16 Strin1 user ( session.1etLser"etails0; // name Strin1 username ( user.1etSession>ana1er.?&_%&0; Strin1 idad+al ( i.1etStrin1$:traKidad+alK0; try { // Buildin1 Parameters ist8%ame3aluePair params ( new Arrayist8%ame3aluePair0; params.addnew Basic%ame3aluePairKusernameK6 username00; params.addnew Basic%ame3aluePairKidad+alK6 idad+al00;
o1.dKreFuestEK6 Kstartin1K0; // 1ettin1 product details 2y makin1 H''P reFuest JS%2ect son ( sonParser.makeHttp4eFuest 6&?_$)6 K&$'K6 params0; // check your lo1 ,or son response o1.dKoadin1K6 son.toStrin100; // son success ta1 success ( son.1etInt(_2$66&220; if success (( 0 { // sukses men1am2il detail an11ota JS%Array mem2er2 ( son.1etJS%Array(_6&?0; // JS% Array // am2il o2ek mem2er pertama dari JS% Array final JS%2ect cetak ( mem2er2.1etJS%2ect)0; // update LI dari Back1round 'hread runnLi'hreadnew 4unna2le0 { public void run0 { t:tI" ( 'e:t3ie+0,ind3ie+ById4.id.et*+0; t:t%ama ( 'e:t3ie+0,ind3ie+ById4.id.et%ama0; t:t'elpon ( 'e:t3ie+0,ind3ie+ById4.id.etelpon0;
t:tAsal (
'e:t3ie+0,ind3ie+ById4.id.etsal0; t:t'uuan ( 'e:t3ie+0,ind3ie+ById4.id.etuCuan0; t:tHar1a ( 'e:t3ie+0,ind3ie+ById4.id.et9ar#a0; t:tJumlah ( 'e:t3ie+0,ind3ie+ById4.id.et>umlah0;
t:t'an11alBeran1kat ( 'e:t3ie+0,ind3ie+ById4.id.etan##al7eran#kat0; t:tJamBeran1kat ( 'e:t3ie+0,ind3ie+ById4.id.et>am7eran#kat0; t:t'an11alPesan ( 'e:t3ie+0,ind3ie+ById4.id.etan##al0; t:t'otal ( 'e:t3ie+0,ind3ie+ById4.id.etotal0; try { // tampilkan data mem2er di $dit'e:t t:tI".set'e:tKI" Pesanan ( K C
cetak.1etStrin1(_*+00; t:t%ama.set'e:tKAtas %ama ( K C cetak.1etStrin1(_%00; t:t'elpon.set'e:tK%omor 'elpon ( K C cetak.1etStrin1(_&,4%00; t:tAsal.set'e:tKOota Asal ( K C cetak.1etStrin1(_200; t:t'uuan.set'e:tKOota 'uuan ( K C cetak.1etStrin1(_$>$%00; t:t'an11alBeran1kat.set'e:tK'an11al Beran1kat ( K C cetak.1etStrin1(_%((_7?00; t:t'an11alPesan.set'e:tK'an11al Beran1kat ( K C cetak.1etStrin1(_%((00; t:tJamBeran1kat.set'e:tKJam Beran1kat ( K C cetak.1etStrin1(_>00; t:tHar1a.set'e:tKHar1a 'iket ( K C cetak.1etStrin1(_9)(00; t:t'otal.set'e:tK'otal Bayar ( K C cetak.1etStrin1(_400; t:tJumlah.set'e:tKJumlah 'iket ( K C cetak.1etStrin1(_>$900;
7 catch JS%$:ception e0 { // !D! Auto?1enerated catch 2lock e.printStack'race0; 7 7 70; 7else{ o1.dKPesanan 1a1alEK6 son.1etStrin1(_&22(&00; return son.1etStrin1(_&22(&0; 7 7 catch JS%$:ception e0 { e.printStack'race0; 7 return null;
7 /** * A,ter completin1 2ack1round task "ismiss the pro1ress dialo1
* **/ protected void onPost$:ecuteStrin1 ,ile!url0 { // dismiss the dialo1 once product deleted p"ialo1.dismiss0; 7 7 public void createP"=0 { "ocument doc ( new "ocument0; try {
Strin1 path ( $nvironment.#et&ternal2tora#e+irectory0.1etA2solutePath0 C K/podharmaK; =ile dir ( new =ilepath0; ifEdir.e:ists00 dir.mkdirs0; o1.dKP"=reatorK6 KP"= Path< K C path0; Strin1 idad+al ( 'e:t3ie+0,ind3ie+ById4.id.et*+00.1et'e:t0.toStrin10; Strin1 ,path ( idad+al C K.pd,K; =ile ,ile ( new =iledir6 ,path0; //=ile ,ile ( ne+ =iledir6 Korder.pd,K0; =ileutputStream ,ut ( new =ileutputStream,ile0; Pd,riter.#et*nstancedoc6 ,ut0; //open the document doc.open0;
/* reate Para1raph and Set =ont */ Para1raph p ( new Para1raphKBLO'I P$>BA#A4A% 'IO$'K0; /* reate Set =ont and its Si@e */ =ont para=ont( new =ont=ont.9&'&*60; para=ont.setSi@eQ0; p.setAli1nmentPara1raph.*(%_6&%&)0; p.set=ontpara=ont0; //add para1raph to document doc.addp0; /* reate Para1raph and Set =ont */ Para1raph pD ( new Para1raphKP "HA4>AK0; /* reate Set =ont and its Si@e */ =ont para=ontD( new =ont=ont.9&'&*60; para=ontD.setSi@e50; pD.setAli1nmentPara1raph.*(%_6&%&)0;
pD.set=ontpara=ontD0; //add para1raph to document doc.addpD0; /* Insertin1 Ima1e in P"= */ ByteArrayutputStream stream ( new ByteArrayutputStream0; Bitmap 2itmap (
lo#oputih0; Bitmap=actory.decode)esource 1etBaseonte:t0.1et4esources06 2itmap.compressBitmap.ompress=ormat. )) 6 stream0; >,&(64.dra+a2le. Ima1e myIm1 ( Ima1e.#et*nstancestream.toByteArray00; myIm1.setAli1nmentIma1e.*++&0; //add ima1e to document doc.addmyIm10; /* reate Para1raph and Set =ont */ Para1raph p ( new Para1raphK??????????????????????????????????? ??????????????????????????????????????????????????????????????????????????K0; /* reate Set =ont and its Si@e */ para=ontD.setSi@e50; p.setAli1nmentPara1raph.*(%_6&%&)0; //add para1raph to document doc.addp0;
/* reate Para1raph and Set =ont */ Para1raph pR ( Para1raphK new KCidad+al0; /* reate Set =ont and its Si@e */ =ont para=ontR( new =ont=ont.9&'&*60; para=ontR.setSi@eR0; pR.setAli1nmentPara1raph.*(%_&D0; pR.set=ontpara=ontR0; //add para1raph to document doc.addpR0; /* reate Para1raph and Set =ont */ Strin1 nama ( 'e:t3ie+0,ind3ie+ById4.id.et%ama00.1et'e:t0.toStrin10; Para1raph p5 ( Para1raphK new KCnama0; /* reate Set =ont and its Si@e */ =ont para=ont5( new =ont=ont.9&'&*60; para=ont5.setSi@eR0; p5.setAli1nmentPara1raph.*(%_&D0; p5.set=ontpara=ont50; //add para1raph to document doc.addp50; /* reate Para1raph and Set =ont */ Strin1 asal ( 'e:t3ie+0,ind3ie+ById4.id.etsal00.1et'e:t0.toStrin10;
Para1raph pA ( Para1raphK new KCasal0; /* reate Set =ont and its Si@e */ =ont para=ontA( new =ont=ont.9&'&*60; para=ontA.setSi@eR0; pA.setAli1nmentPara1raph.*(%_&D0; pA.set=ontpara=ontA0; //add para1raph to document doc.addpA0; /* reate Para1raph and Set =ont */ Strin1 tuuan ( 'e:t3ie+0,ind3ie+ById4.id.etuCuan00.1et'e:t0.toStrin10; Para1raph pT ( Para1raphK new KCtuuan0; /* reate Set =ont and its Si@e */ =ont para=ontT( new =ont=ont.9&'&*60; para=ontT.setSi@eR0; pT.setAli1nmentPara1raph.*(%_&D0; pT.set=ontpara=ontT0; //add para1raph to document doc.addpT0; /* reate Para1raph and Set =ont */ Strin1 tan11al!2kt ( 'e:t3ie+0,ind3ie+ById4.id.etan##al7eran#kat00.1et'e:t0.toStrin10; Para1raph pQ ( Para1raphK KCtan11al!2kt0; new /* reate Set =ont and its Si@e */ =ont para=ontQ( new =ont=ont.9&'&*60; para=ontQ.setSi@eR0; pQ.setAli1nmentPara1raph.*(%_&D0; pQ.set=ontpara=ontQ0; //add para1raph to document doc.addpQ0; /* reate Para1raph and Set =ont */ Strin1 am ( 'e:t3ie+0,ind3ie+ById4.id.et>am7eran#kat00.1et'e:t0.toStrin10; Para1raph pU ( Para1raphK new KCam0; /* reate Set =ont and its Si@e */ =ont para=ontU( new =ont=ont.9&'&*60; para=ontU.setSi@eR0; pU.setAli1nmentPara1raph.*(%_&D0; pU.set=ontpara=ontU0; //add para1raph to document doc.addpU0; /* reate Para1raph and Set =ont */ Strin1 har1a ( 'e:t3ie+0,ind3ie+ById4.id.et9ar#a00.1et'e:t0.toStrin10; Para1raph p ( Para1raphK new KChar1a0; /* reate Set =ont and its Si@e */ =ont para=ont( new =ont=ont.9&'&*60;
para=ont.setSi@eR0; p.setAli1nmentPara1raph.*(%_&D0; p.set=ontpara=ont0; //add para1raph to document doc.addp0; /* reate Para1raph and Set =ont */ Strin1 umlah ( 'e:t3ie+0,ind3ie+ById4.id. 00.1et'e:t0.toStrin10; et>umlah Para1raph p) (Para1raphK new KCumlah0; /* reate Set =ont and its Si@e */ =ont para=ont)( new =ont=ont.9&'&*60; para=ont).setSi@eR0; p).setAli1nmentPara1raph.*(%_&D0; p).set=ontpara=ont)0; //add para1raph to document doc.addp)0; /* reate Para1raph and Set =ont */ Strin1 total ( 'e:t3ie+0,ind3ie+ById4.id.etotal00.1et'e:t0.toStrin10; Para1raph p ( Para1raphK new KCtotal0; /* reate Set =ont and its Si@e */ =ont para=ont( new =ont=ont.9&'&*60; para=ont.setSi@eR0; p.setAli1nmentPara1raph.*(%_&D0; p.set=ontpara=ont0; //add para1raph to document doc.addp0; /* reate Para1raph and Set =ont */ Para1raph pD ( new Para1raphK P "harma K0; /* reate Set =ont and its Si@e */ =ont para=ontD( new =ont=ont.9&'&*60; para=ontD.setSi@eR0; pD.setAli1nmentPara1raph.*(%_)*(90; pD.set=ontpara=ont0; //add para1raph to document doc.addpD0;
'oast.makeet1etApplicationonte:t06 KBukti Pemesanan tersimpan pada S"A4" Anda dalam ,older podharma...K6 'oast. &%(9_4%(0.sho+0; Intent in ( new Intent1etApplicationonte:t06 >enu>em2er.class0; ,inish0; startActivityin0;
7 catch "ocument$:ception de0 { o1.eKP"=reatorK6 K"ocument$:ception
doc.close0;
Strin1 idad+al ( 'e:t3ie+0,ind3ie+ById4.id.et*+00.1et'e:t0.toStrin10; Strin1 ,path (
idad+al C K.pd,K;
//Buka ,ile pd, otomatis den1an pd, reader =ile ,ile( new =ile$nvironment.#et&ternal2tora#e+irectory0.1etA2solutePath0 C K/podharma/K C ,path0; if ,ile.e:ists00 { Lri path ( Lri.fromDile,ile0; Intent intent ( new IntentIntent.6*4%_'*&A0; intent.set"ataAnd'ypepath6 Kapplication/pd,K0; intent.set=la1sIntent.D(_6*'*_6&)_4,0; try {
startActivityintent0; ,inish0; 7 catch Activity%ot=ound$:ception e0 { 'oast.makeetcetak"etail.this6 K%o Application Availa2le to 3ie+ P"=K6 'oast.&%(9_294)0.sho+0; 7 7 7 7
cetak_detail.#ml 8inearayout :mlns
android
8'e:t3ie+ android
8/inearayout 8inearayout android
8'e:t3ie+ android
android
"fill_parent" android
8'e:t3ie+ android
8'e:t3ie+ android
8'e:t3ie+ android
8/inearayout 8inearayout android
8'e:t3ie+ androidumlah" android
8'e:t3ie+ android
android
8'e:t3ie+ androidam7eran#kat" android
"p" android
8'e:t3ie+ android
+.13. Bukti )emba"aran )DF Catatan ;
=ntuk membuka otomatis file P% bukti pemesanan, maka aplikasi ini harus di"alankan dengan emulator dengan LP= armeabi yang sudah diinstal adobe reader, seperti sudah dibahas pada bab sebelumnya. Jika di"alankan dengan emulator dengan LP= Rntel maka bukti pembayaran tidak akan terbuka secara otomatis, melainkan bisa dibuka melalui "endela 9S pada tab file eVplorer folder storage%sdcard%podharma%idpesanan.pdf.
-,. $enu /nformasi
+.15. Acti!it" /nformasi )ada acti!it" member