You are on page 1of 9

1.

AppController
Buatlah sebuah Class baru dengan nama AppController.java, lalu isi dengan perintah berikut ini:
package isi.nama.package;

import android.app.Application;
import android.text.TextUtils;

import com.android.volley.Request;
import com.android.volley.RequestQueue;
import com.android.volley.toolbox.ImageLoader;
import com.android.volley.toolbox.Volley;

public class AppController extends Application {


public static final String TAG = AppController.class.getSimpleName();

private RequestQueue mRequestQueue;

private static AppController mInstance;

@Override
public void onCreate() {
super.onCreate();
mInstance = this;
}

public static synchronized AppController getInstance() {


return mInstance;
}

public RequestQueue getRequestQueue() {


if (mRequestQueue == null) {
mRequestQueue = Volley.newRequestQueue(getApplicationContext());
}

return mRequestQueue;
}

public <T> void addToRequestQueue(Request<T> req, String tag) {


req.setTag(TextUtils.isEmpty(tag) ? TAG : tag);
getRequestQueue().add(req);
}

public <T> void addToRequestQueue(Request<T> req) {


req.setTag(TAG);
getRequestQueue().add(req);
}

public void cancelPendingRequests(Object tag) {


if (mRequestQueue != null) {
mRequestQueue.cancelAll(tag);
}
}
}

2. Login with Volley


Buatlah prosedur dengan nama login(String id, String pass), lalu isi dengan perintah berikut ini:
private void login(String noid, String pass) {
//menampilkan progress dialog
progressDialog = new ProgressDialog(this);
progressDialog.setMessage("Mengecek ID dan Kata Sandi");
progressDialog.show();
progressDialog.setCancelable(false);
progressDialog.setCanceledOnTouchOutside(false);
//mengambil request dari API
final StringRequest strReq = new StringRequest(Request.Method.POST,
url_login, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Response: " + response.toString());
try {
//mengambil response dari API berupa JSON
JSONObject jObj = new JSONObject(response);
String error = jObj.getString("error");
if (error.matches("false")) {
JSONArray jArr = jObj.getJSONArray("data");
JSONObject dataObj = jArr.getJSONObject(0);
//menyimpan data user ke Session
sessionManager.createSession(dataObj.getString("noid"));
progressDialog.dismiss();
//membuka intent / activity menu
startActivity(new Intent(LoginActivity.this,
MenuActivity.class));
finish();
} else {
//Jika id atau password salah
Toast.makeText(LoginActivity.this, "ID atau Kata Sandi
Salah!", Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
//Jika koneksi bermasalah atau API error
Toast.makeText(LoginActivity.this, "Tidak Ada Koneksi Internet",
Toast.LENGTH_LONG).show();
progressDialog.dismiss();
}
}) {
@Override
protected Map<String, String> getParams() {
//Mengirim parameters ke API
Map<String, String> params = new HashMap<String, String>();
params.put("parameter1", noid);
params.put("parameter2", pass);
return params;
}
};
AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
}
3. Data
Digunakan untuk mengatur (set) dari data yang diinput dan mengambil (get) data ke komponen
yang akan ditampilkan.
package com.fajarms.edmakzie.data;

public class DataSiswaMapel {


private String mpel_noid, mpel_nama, gump_noid, gump_mpel, guru_noid,
guru_nama, guru_foto;

public DataSiswaMapel() {
}

public DataSiswaMapel(String mpel_noid, String mpel_nama, String gump_noid,


String gump_mpel, String guru_noid, String guru_nama, String guru_foto) {
this.mpel_noid = mpel_noid;
this.mpel_nama = mpel_nama;
this.gump_noid = gump_noid;
this.gump_mpel = gump_mpel;
this.guru_noid = guru_noid;
this.guru_nama = guru_nama;
this.guru_foto = guru_foto;
}

public String getMpel_noid() {


return mpel_noid;
}

public void setMpel_noid(String mpel_noid) {


this.mpel_noid = mpel_noid;
}

public String getMpel_nama() {


return mpel_nama;
}

public void setMpel_nama(String mpel_nama) {


this.mpel_nama = mpel_nama;
}

public String getGump_noid() {


return gump_noid;
}

public void setGump_noid(String gump_noid) {


this.gump_noid = gump_noid;
}

public String getGump_mpel() {


return gump_mpel;
}

public void setGump_mpel(String gump_mpel) {


this.gump_mpel = gump_mpel;
}

public String getGuru_noid() {


return guru_noid;
}

public void setGuru_noid(String guru_noid) {


this.guru_noid = guru_noid;
}

public String getGuru_nama() {


return guru_nama;
}

public void setGuru_nama(String guru_nama) {


this.guru_nama = guru_nama;
}

public String getGuru_foto() {


return guru_foto;
}

public void setGuru_foto(String guru_foto) {


this.guru_foto = guru_foto;
}
}

4. Adapter ListView / GridView


Digunakan untuk penghubung antara data dan ListView atau GridView
package webid.fhunsur.siafhunsur.adapter;

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

import com.android.volley.toolbox.ImageLoader;

import java.util.List;

import webid.fhunsur.siafhunsur.R;
import webid.fhunsur.siafhunsur.app.AppController;
import webid.fhunsur.siafhunsur.data.DataPerwalian;

public class AdapterPerwalian extends BaseAdapter {


private Activity activity;
private LayoutInflater inflater;
private List<DataPerwalian> items;

ImageLoader imageLoader = AppController.getInstance().getImageLoader();

public AdapterPerwalian(Activity activity, List<DataPerwalian> items) {


this.activity = activity;
this.items = items;
}

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

@Override
public Object getItem(int location) {
return items.get(location);
}

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

@Override
public View getView(int position, View convertView, ViewGroup parent) {

if (inflater == null)
inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

if (convertView == null)
convertView = inflater.inflate(R.layout.list_perwalian, null);

TextView txtNpmm = (TextView) convertView.findViewById(R.id.txtNpmm);


TextView txtNama = (TextView) convertView.findViewById(R.id.txtNama);

DataPerwalian data = items.get(position);

txtNpmm.setText(data.getNpm());
txtNama.setText(data.getNama());

Glide.with(convertView.getContext()).load(dataPenghuniKost.getAvatar())
.thumbnail(0.5f)
.crossFade()
.placeholder(R.drawable.img_profile_default)
.error(R.drawable.img_profile_default)
.bitmapTransform(new
GlideCircleTransformation(convertView.getContext()))
.diskCacheStrategy(DiskCacheStrategy.ALL)
.into((ImageView) convertView.findViewById(R.id.imgGmbr));

return convertView;
}
}

5. View Data
Digunakan untuk menampilkan data dari JSON dengan menggunakan Volley
private void loadData() {
swipe.setRefreshing(true);
itemList.clear();
isiClassAdapter.notifyDataSetChanged();
final StringRequest strReq = new StringRequest(Request.Method.POST, url_api,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(TAG, "Response: " + response.toString());
try {
JSONObject jObj = new JSONObject(response);
String error = jObj.getString("error");
JSONObject result = jObj.getJSONObject("result");
if (error.matches("0")) {
JSONArray jArr = result.getJSONArray("jadwal");
for (int i = 0; i < jArr.length(); i++) {
try {
JSONObject dataObj = jArr.getJSONObject(i);
IsiClassData item = new IsiClassData();
item.setValue(dataObj.getString("json_objek"));
itemList.add(item);
} catch (JSONException e) {
e.printStackTrace();
}
}
}
isiClassAdapter.notifyDataSetChanged();
swipe.setRefreshing(false);
} catch (JSONException e) {
e.printStackTrace();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.e(TAG, "Error: " + error.getMessage());
Toast.makeText(IsiNamaActivity.this, "Tidak dapat mengambil data",
Toast.LENGTH_LONG).show();
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting parameters ke post url
Map<String, String> params = new HashMap<String, String>();
params.put("parameter1", "isinilai");
params.put("parameter2", "isinilai");
return params;
}

@Override
public Map getHeaders() throws AuthFailureError {
HashMap headers = new HashMap();
//headers.put("API-KEY",
"kjashdkjaskjhduihoas978978as9udhujahksdh98");
//headers.put("Content-Type", "application/x-www-form-urlencoded");
return headers;
}
};
AppController.getInstance().addToRequestQueue(strReq, tag_json_obj);
}

6. Session Manager
Digunakan untuk menyimpan data login pengguna
package com.fajarms.perpus;

import android.content.Context;
import android.content.SharedPreferences;

import java.util.HashMap;

public class SessionManager {


SharedPreferences pref;
SharedPreferences.Editor editor;
Context context;
int mode = 0;

private static final String pref_name = "crudpref";


private static final String is_login = "islogin";
public static final String key_id = "key_id";
public static final String key_nama = "key_nama";
public static final String key_kelas = "key_kelas";
public static final String key_password = "key_password";
public static final String key_foto = "key_foto";
public static final String key_telp = "key_telp";
public static final String key_alamat = "key_alamat";

public SessionManager(Context context) {


this.context = context;
pref = context.getSharedPreferences(pref_name, mode);
editor = pref.edit();
}

public void createSession(String id, String nama, String kelas, String


password,
String foto, String telp, String alamat){
editor.putBoolean(is_login, true);
editor.putString(key_id, id);
editor.putString(key_nama, nama);
editor.putString(key_kelas, kelas);
editor.putString(key_password, password);
editor.putString(key_foto, foto);
editor.putString(key_telp, telp);
editor.putString(key_alamat, alamat);
editor.commit();
}

public boolean is_login() {


return pref.getBoolean(is_login, false);
}

public void logout(){


editor.clear();
editor.commit();
}

public HashMap<String, String> getUserDetails(){


HashMap<String, String> user = new HashMap<String, String>();
user.put(pref_name, pref.getString(pref_name, null));
user.put(key_id, pref.getString(key_id, null));
user.put(key_nama, pref.getString(key_nama, null));
user.put(key_kelas, pref.getString(key_kelas, null));
user.put(key_password, pref.getString(key_password, null));
user.put(key_foto, pref.getString(key_foto, null));
user.put(key_telp, pref.getString(key_telp, null));
user.put(key_alamat, pref.getString(key_alamat, null));
return user;
}
}
7. Glide Circle Image
Digunakan untuk membuat gambar menjadi lingkaran dengan menggunakan Library Glide. Buat
Class dengan nama GlideCircleTransformation.java
package com.fajarms.edmakzie.util;

import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapShader;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;

import com.bumptech.glide.Glide;
import com.bumptech.glide.load.Transformation;
import com.bumptech.glide.load.engine.Resource;
import com.bumptech.glide.load.engine.bitmap_recycle.BitmapPool;
import com.bumptech.glide.load.resource.bitmap.BitmapResource;

public class GlideCircleTransformation implements Transformation<Bitmap> {

private BitmapPool mBitmapPool;

public GlideCircleTransformation(Context context) {


this(Glide.get(context).getBitmapPool());
}

public GlideCircleTransformation(BitmapPool pool) {


this.mBitmapPool = pool;
}

@Override
public Resource<Bitmap> transform(Resource<Bitmap> resource, int outWidth,
int outHeight) {
Bitmap source = resource.get();
int size = Math.min(source.getWidth(), source.getHeight());

int width = (source.getWidth() - size) / 2;


int height = (source.getHeight() - size) / 2;

Bitmap bitmap = mBitmapPool.get(size, size, Bitmap.Config.ARGB_8888);


if (bitmap == null) {
bitmap = Bitmap.createBitmap(size, size, Bitmap.Config.ARGB_8888);
}

Canvas canvas = new Canvas(bitmap);


Paint paint = new Paint();
BitmapShader shader =
new BitmapShader(source, BitmapShader.TileMode.CLAMP,
BitmapShader.TileMode.CLAMP);
if (width != 0 || height != 0) {
// source isn't square, move viewport to center
Matrix matrix = new Matrix();
matrix.setTranslate(-width, -height);
shader.setLocalMatrix(matrix);
}
paint.setShader(shader);
paint.setAntiAlias(true);

float r = size / 2f;


canvas.drawCircle(r, r, r, paint);
return BitmapResource.obtain(bitmap, mBitmapPool);
}

@Override
public String getId() {
return "GlideCircleTransformation()";
}
}

You might also like