Koneksi Awal
1. Membuat database dan table beserta isi datanya.
create database ppb; create table pegawai(nip varchar(5) primary key not null, nama_peg varchar(45), gaji int(12)); insert into pegawai values ('A0001','Aji',15000000), ('A0002','Kusumadhany',10000000);
2. Membuat koneksi dengan nama file “index.php” dan letakkan didalam htdocs xampp, isi file tersebut:
<?php try { //benar $konn=new PDO("mysql:host=localhost;dbname=ppb","root",""); } catch(PDOexception $err) { } if ($_SERVER['REQUEST_METHOD']==='GET') { $msql="select *from pegawai order by nip"; $hasil=$konn->prepare($msql); $hasil->execute(); $data=$hasil->fetchAll(PDO::FETCH_ASSOC); echo json_encode($data); } ?>
Hasil jika dibuka di browser:
3. Buka Android studio, dan buat project baru.
4. Buka file ‘AndroidManifest.xml’ dan tambahkan kode berikut diatas <application
<uses-permission android:name="android.permission.INTERNET"/>
5. Dan tambahkan kode berikut dibawah <application
android:usesCleartextTraffic="true"
6. Menambahkan library retrofit, caranya:
- Pergi ke file
- -> project structure
- -> dependencies
- -> app
- -> tekan tombol “+” dibawah Declared Dependencies
- -> pilih library dependency
- -> cari “com.squareup.retrofit2:retrofit:2.9.0”
- Lalu klik ok dan apply
- dan juga cari
com.squareup.retrofit2:converter-gson:2.9.0
7. Buat Package adaptor, api, class, interface dan model, caranya:
- klik kanan “com.example.latihanmysql” pada folder java
- new
- package
8. Masukkan “mainactivity.java” kedalam package class.
9. Isi activity_main dengan kode berikut:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" tools:context=".CLASS.MainActivity"> <androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerviewPegawai" android:layout_width="match_parent" android:layout_height="match_parent"/> <com.google.android.material.floatingactionbutton.FloatingActionButton android:id="@+id/tombolInput" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentRight="true" android:layout_alignParentBottom="true" android:src="@android:drawable/ic_input_add" /> </RelativeLayout>
10. Buat class dengan nama “ModelPegawai” didalam package Model, dan isi dengan kode:
package com.example.latihanmysql.MODEL; public class ModelPegawai { String nip; String nama_peg; int gaji; }
11. Kemudian buat constructor dengan cara klik kanan -> generate -> constructor
12. Buat getter dan setter dengan cara klik kanan -> generate -> getter & setter
13. Sehingga sekarang “ModelPegawai.java” berisi kode berikut:
package com.example.latihanmysql.MODEL; public class ModelPegawai { String nip; String nama_peg; int gaji; public ModelPegawai(String nip, String nama_peg, int gaji) { this.nip = nip; this.nama_peg = nama_peg; this.gaji = gaji; } public String getNip() { return nip; } public void setNip(String nip) { this.nip = nip; } public String getNama_peg() { return nama_peg; } public void setNama_peg(String nama_peg) { this.nama_peg = nama_peg; } public int getGaji() { return gaji; } public void setGaji(int gaji) { this.gaji = gaji; } }
14. Buat java class “KoneksiApi” dalam package API, dan berikut isi kodenya:
package com.example.latihanmysql.API; import retrofit2.Retrofit; import retrofit2.converter.gson.GsonConverterFactory; public class KoneksiApi { public final static String url_base="http://192.168.43.13/kuliah/pemrograman_perangkat_bergerak/"; private static Retrofit retrofit; public static Retrofit KoneksiAPI() { if (retrofit==null) { retrofit=new Retrofit.Builder() .baseUrl(url_base) .addConverterFactory(GsonConverterFactory.create()) .build(); } return retrofit; } }
15. Membuat “InterfacePegawai” pada package interface.
package com.example.latihanmysql.INTERFACE; import com.example.latihanmysql.MODEL.ModelPegawai; import java.util.List; import retrofit2.Call; import retrofit2.http.GET; public interface InterfacePegawai { @GET("pegawai/") Call<List<ModelPegawai>> tampilPegawai(); }
16. Membuat “AdaptorPegawai” didalam package Adaptor.
package com.example.latihanmysql.ADAPTOR; import androidx.recyclerview.widget.RecyclerView; public class AdaptorPegawai extends RecyclerView.Adapter<AdaptorPegawai.myviewHolder> { }
nantinya kodenya akan berwarna merah, tinggal klik lampu yang berwarna merah, nanti kodenya akan menjadi seperti dibawah ini:
package com.example.latihanmysql.ADAPTOR; import android.view.View; import android.view.ViewGroup; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; public class AdaptorPegawai extends RecyclerView.Adapter<AdaptorPegawai.myviewHolder> { @NonNull @Override public myviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { return null; } @Override public void onBindViewHolder(@NonNull AdaptorPegawai.myviewHolder holder, int position) { } @Override public int getItemCount() { return 0; } public class myviewHolder extends RecyclerView.ViewHolder { public myviewHolder(@NonNull View itemView) { super(itemView); } } }
17. Kemudian tambahkan kode berikut:
ArrayList<ModelPegawai> modelPegawaiArrayList;
dibawah kode:
public class AdaptorPegawai extends RecyclerView.Adapter<AdaptorPegawai.myviewHolder>
18. Kemudian dibawah kode:
ArrayList<ModelPegawai> modelPegawaiArrayList;
Klik kanan -> generate -> constructor.
Sehingga hasilnya:
public class AdaptorPegawai extends RecyclerView.Adapter<AdaptorPegawai.myviewHolder> { ArrayList<ModelPegawai> modelPegawaiArrayList; public AdaptorPegawai(ArrayList<ModelPegawai> modelPegawaiArrayList) { this.modelPegawaiArrayList = modelPegawaiArrayList; }
19. Kemudian pada layout tambahkan layout resource file dengan nama “format_pegawai”, caranya:
klik kanan pada layout -> new -> layout resource file.
20. Buat kode format_pegawai seperti berikut:
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:padding="5dp" android:layout_height="match_parent"> <androidx.cardview.widget.CardView android:backgroundTint="@color/purple_200" android:layout_width="match_parent" android:layout_height="wrap_content"> <RelativeLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <TextView android:id="@+id/nippegawai" android:hint="nip pegawai" android:layout_marginLeft="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/namapegawai" android:hint="nama pegawai" android:layout_below="@id/nippegawai" android:layout_marginLeft="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> <TextView android:id="@+id/gajipegawai" android:hint="gaji pegawai" android:layout_below="@id/namapegawai" android:layout_marginLeft="10dp" android:layout_width="match_parent" android:layout_height="wrap_content"/> </RelativeLayout> </androidx.cardview.widget.CardView> </RelativeLayout>
Menampilkan Data
21. Pada file “Activity_main”, tambahkan kode berikut:
tools:listitem="@layout/format_pegawai"
didalam:
<androidx.recyclerview.widget.RecyclerView
Sehingga menjadi:
<androidx.recyclerview.widget.RecyclerView android:id="@+id/recyclerviewPegawai" tools:listitem="@layout/format_pegawai" android:layout_width="match_parent" android:layout_height="match_parent"/>
22. Buka “Adaptor Pegawai”, kemudian tambahkan kode berikut:
enip=itemView.findViewById(R.id.nippegawai); enama=itemView.findViewById(R.id.namapegawai); egaji=itemView.findViewById(R.id.gajipegawai);
dibawah:
public myviewHolder(@NonNull View itemView) { super(itemView);
Sehingga hasilnya:
public class myviewHolder extends RecyclerView.ViewHolder { TextView enip,enama,egaji; public myviewHolder(@NonNull View itemView) { super(itemView); enip=itemView.findViewById(R.id.nippegawai); enama=itemView.findViewById(R.id.namapegawai); egaji=itemView.findViewById(R.id.gajipegawai); }
23. Kemudian tambahkan kode berikut didalam getItemCount:
return modelPegawaiArrayList.size();
sehingga hasilnya:
@Override public int getItemCount() { return modelPegawaiArrayList.size(); }
24. Kemudian pada onBinViewHolder tambahkan kode berikut:
holder.enip.setText(modelPegawaiArrayList.get(position).getNip()); holder.enama.setText(modelPegawaiArrayList.get(position).getNama_peg()); holder.egaji.setText(modelPegawaiArrayList.get(position).getGaji());
Sehingga menjadi:
@Override public void onBindViewHolder(@NonNull AdaptorPegawai.myviewHolder holder, int position) { holder.enip.setText(modelPegawaiArrayList.get(position).getNip()); holder.enama.setText(modelPegawaiArrayList.get(position).getNama_peg()); holder.egaji.setText(modelPegawaiArrayList.get(position).getGaji()); }
25. Pada onCreateViewHolder tambahkan kode:
Context context=parent.getContext(); LayoutInflater inflater=LayoutInflater.from(context); View view=inflater.inflate(R.layout.format_pegawai,parent, false); return new AdaptorPegawai.myviewHolder(view);
Sehingga menjadi:
@Override public myviewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { Context context=parent.getContext(); LayoutInflater inflater=LayoutInflater.from(context); View view=inflater.inflate(R.layout.format_pegawai,parent, false); return new AdaptorPegawai.myviewHolder(view); }
26. Buka file “MainActivity.java“, lalu buat kodenya seperti berikut:
package com.example.latihanmysql.CLASS; import androidx.appcompat.app.AppCompatActivity; import androidx.recyclerview.widget.RecyclerView; import android.os.Bundle; import com.example.latihanmysql.API.KoneksiApi; import com.example.latihanmysql.INTERFACE.InterfacePegawai; import com.example.latihanmysql.MODEL.ModelPegawai; import com.example.latihanmysql.R; import java.util.ArrayList; import retrofit2.Call; import retrofit2.Callback; import retrofit2.Response; public class MainActivity extends AppCompatActivity { RecyclerView recyclerView_peg; ArrayList<ModelPegawai> modelPegawaiArrayList=new ArrayList<>(); InterfacePegawai interfacePegawai; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); recyclerView_peg=findViewById(R.id.recyclerviewPegawai); interfacePegawai= KoneksiApi.KoneksiAPI().create(InterfacePegawai.class); recyclerView_peg.setLayoutManager(new LinearLayoutManager(this)); } }
lalu tambahkan kode berikut diatas kurung kurawal tutup terakhir:
@Override protected void onResume() { retrofit2.Call<List<ModelPegawai>> tampildata = interfacePegawai.tampilPegawai(); tampildata.enqueue(new Callback<List<ModelPegawai>>() { @Override public void onResponse(Call<List<ModelPegawai>> call, Response<List<ModelPegawai>> response) { ArrayList<ModelPegawai> modelPegawaiArrayList = (ArrayList<ModelPegawai>) response.body(); AdaptorPegawai adaptorPegawai = new AdaptorPegawai(modelPegawaiArrayList); recyclerView_peg.setAdapter(adaptorPegawai); } @Override public void onFailure(Call<List<ModelPegawai>> call, Throwable t) { } }); super.onResume(); }
Entry Data
27. Buat “Empty activity” dengan nama EntryDataPegawai.
28. Tambahkan kode berikut, didalam layout “activity_entry_data_pegawai“.
<?xml version="1.0" encoding="utf-8"?> <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:padding="5dp" android:layout_height="match_parent" tools:context=".CLASS.EntryDataPegawai"> <TextView android:id="@+id/teksentry" android:textAppearance="@style/TextAppearance.AppCompat.SearchResult.Title" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="Entry data Pegawai" /> <EditText android:id="@+id/nippegawai" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_below="@+id/teksentry" android:hint="nip guru" /> <EditText android:id="@+id/namapegawai" android:hint="nama guru" android:layout_below="@+id/nippegawai" android:layout_width="match_parent" android:layout_height="wrap_content"/> <EditText android:id="@+id/gajipegawai" android:hint="status guru" android:layout_below="@+id/namapegawai" android:layout_width="match_parent" android:layout_height="wrap_content"/> <LinearLayout android:layout_below="@+id/gajipegawai" android:layout_width="match_parent" android:gravity="center" android:layout_height="wrap_content"> <Button android:id="@+id/tombolsave" android:text="save" android:layout_margin="4dp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> <Button android:id="@+id/tombolview" android:text="view" android:layout_margin="4dp" android:layout_width="wrap_content" android:layout_height="wrap_content"/> </LinearLayout> </RelativeLayout>
29. Buka “MainActivity.java” dan tambahkan kode berikut:
FloatingActionButton tmblinput; tmblinput=findViewById(R.id.tombolinput); tmblinput.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { Intent intent=new Intent(view.getContext(),EntryDataPegawai.class); view.getContext().startActivity(intent); } });
Dibawah kode:
recyclerView_peg.setLayoutManager(new LinearLayoutManager(this));
30. Buka “EntryDataPegawai”, dan tambahkan kode:
package com.example.mysql.CLASS; import androidx.appcompat.app.AppCompatActivity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.EditText; import com.example.mysql.MODEL.ModelPegawai; import com.example.mysql.R; public class EntryDataPegawai extends AppCompatActivity implements View.OnClickListener { EditText ednip,ednama,edgaji; Button btnsimpan,btnview; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_entry_data_pegawai); ednip=findViewById(R.id.nippegawai); ednama=findViewById(R.id.namapegawai); edgaji=findViewById(R.id.gajipegawai); btnsimpan=findViewById(R.id.tombolsave); btnview=findViewById(R.id.tombolview); btnsimpan.setOnClickListener(this); btnview.setOnClickListener(this); } @Override public void onClick(View view) { if (view.getId()==R.id.tombolsave) { }else { Intent intent=new Intent(view.getContext(),MainActivity.class); view.getContext().startActivity(intent); } } }