Hai sobat, pada artikel sebelumnya yang berjudul Membuat Aplikasi Sederhana dengan Material Design, telah dijelaskan langkah-langkah menciptakan aplikasi sederhana dengan material design sehingga nampak anggun dan modern. Dan kali ini kita akan menciptakan satu aplikasi sederhana perihal portal gosip dengan memakai json.
Pernah kan teman mendownload aplikasi gosip dari PlayStore ibarat Detik.com atau Baca? Dua aplikasi tersebut termasuk aplikasi portal berita, aplikasi yang dibentuk untuk menampilkan gosip dari sebuah laman web. Cara ini juga sanggup disebut dengan WebService, yaitu teknik mengambil informasi dari sebuah web atau menjalankan fungsi aplikasi dengan memanggil data dari web.
Dengan mengunakan webservice kita sanggup mendapat banyak manfaat ibarat kontrol jarak jauh, mempercepat pengiriman data dan ringan dalam penggunaan. Dan kali ini kita akan menciptakan alikasi portal gosip memakai layanan webservice. Data untuk aplikasi portal gosip ini berasal dari database mySQL yang nantinya kita panggil memakai JSON. JSON merupakan file javascript yang mempunyai kegunaan untuk pertukaran data dari java ke php atau sebaliknya. Untuk menciptakan aplikasi android memakai webservice, diharapkan aplikasi web server untuk mengelola server web yang dibuat. Sobat sanggup memakai aplikasi XAMPP untuk menciptakan database dan mengelola server.
Baik, kini kita buat aplikasinya, silakan teman ikuti langkah-langkah berikut dengan cermat
Pertama, teman buka aplikasi XAMPP teman kemudian pergi ke phpMyAdmin dan buat database gres dengan nama db_berita, kalau sudah buat tabel gres dengan nama berita. Buat tabelnya ibarat berikut ini
Jika sudah, kini teman buat file php gres memakai Dreamweaver 8 atau text editor lainya. Buat kodenya ibarat di bawah ini :
Simpan dan beri nama koneksi.php. Setelah itu teman buat file gres dengan nama berita.php yang akan menampilkan data gosip berupa list, buat kodenya ibarat berikut ini
Buat file gres dan beri nama detail_berita.php yang berfungsi menampilkan detail gosip saat list gosip diklik, buat kodenya ibarat berikut ini
Selanjutnya teman masukkan file tadi ke folder htdoc dan buat susunan foldernya ibarat berikut ini
File-file tadi yakni file json untuk nantinya dipakai untuk memanggil data dari server. Didalam file php di atas terdapat url server untuk mengakses file tersebut, silahkan diadaptasi berdasarkan struktur dan url/nomor IP milik sobat.
Selanjutnya kita akan menciptakan aplikasinya di Android Studio, ibarat biasa pertama teman buat project gres dengan nama Portal Berita dan untuk packagenya dengan nama blogsetyaaji.com
Saat mengatur activity, ubahlah nama MainActivity menjadi BeritaUtama, sedangkan activity_main.xml ubahlah menjadi berita_utama.xml
Selanjutnya teman instal dulu dependencies yang diharapkan di buld:grandle(Module app) dengan cara menyesuaikan kodenya ibarat di bawah ini
Akan muncul pemberitahuan di atas instruksi editor pilih sync now
Pindah ke pengaturan layout, teman buka Berita_Utam.xml dan buat kodenya ibarat berikut ini
Selanjutnya buat layout gres lagi dengan nama list_row.xml dan buat kodenya ibarat berikut ini
Buat file layout lagi dengan nama single_list_item.xml dan buat kodenya ibarat berikut ini
Setelah menciptakan file layout, kini kita menciptakan file java. Di sini kita membutuhkan beberapa file java dan library yang dipakai untuk memanggil dan menampilkan data json yang telah diparsing berupa file gambar.
Dan untuk pertama kali, silahkan teman buka file BeritaUtama.java dan buat kodenya ibarat berikut ini
Selanjutnya, teman buat file java lagi dengan nama JSONParser.java dan buat kodenya ibarat berikut ini
Buat file java gres dengan nama FileCache.java, buat kodenya ibarat berikut
ImageLoader.java
LazyAdapter.java
MemoryCache.java
Utils.java
DetailBerita.java
Tahap pembuatan file java dan library selesai, kini teman buka directory Manifest dan buka AndroidManifest.xml dan tambahkan user permission ibarat di bawah ini
Jika sudah semuanya, silahkan teman jalankan aplikasinya, maka tampilan dari aplikasi portal beritanya akan ibarat berikut ini
Dan ini video tampilan aplikasi portal gosip dari tutorial di atas
Silahkan kalau teman ingin melihat dan mendownload pola project dari tutorial ini, jangan lupa follow dan bintangnya.. 😂
Follow @AjiSetya Watch Star
Dan itulah cara menciptakan aplikasi portal gosip android dengan database mySQL dan JSON
Sekian artikel tentang Membuat Aplikasi Portal Berita Android dengan JSON agar bermanfaat, tetap ikuti untuk tutorial menarik lainya.
Pernah kan teman mendownload aplikasi gosip dari PlayStore ibarat Detik.com atau Baca? Dua aplikasi tersebut termasuk aplikasi portal berita, aplikasi yang dibentuk untuk menampilkan gosip dari sebuah laman web. Cara ini juga sanggup disebut dengan WebService, yaitu teknik mengambil informasi dari sebuah web atau menjalankan fungsi aplikasi dengan memanggil data dari web.
Dengan mengunakan webservice kita sanggup mendapat banyak manfaat ibarat kontrol jarak jauh, mempercepat pengiriman data dan ringan dalam penggunaan. Dan kali ini kita akan menciptakan alikasi portal gosip memakai layanan webservice. Data untuk aplikasi portal gosip ini berasal dari database mySQL yang nantinya kita panggil memakai JSON. JSON merupakan file javascript yang mempunyai kegunaan untuk pertukaran data dari java ke php atau sebaliknya. Untuk menciptakan aplikasi android memakai webservice, diharapkan aplikasi web server untuk mengelola server web yang dibuat. Sobat sanggup memakai aplikasi XAMPP untuk menciptakan database dan mengelola server.
Baik, kini kita buat aplikasinya, silakan teman ikuti langkah-langkah berikut dengan cermat
Pertama, teman buka aplikasi XAMPP teman kemudian pergi ke phpMyAdmin dan buat database gres dengan nama db_berita, kalau sudah buat tabel gres dengan nama berita. Buat tabelnya ibarat berikut ini
Jika sudah, kini teman buat file php gres memakai Dreamweaver 8 atau text editor lainya. Buat kodenya ibarat di bawah ini :
<?php // definisikan koneksi ke database $server = "localhost"; $username = "root"; $password = ""; $database = "db_berita"; // Koneksi dan menentukan database di server mysql_connect($server,$username,$password) or die("Koneksi gagal"); mysql_select_db($database) or die("Database tidak sanggup dibuka"); ?> Simpan dan beri nama koneksi.php. Setelah itu teman buat file gres dengan nama berita.php yang akan menampilkan data gosip berupa list, buat kodenya ibarat berikut ini
<?php include './config/koneksi.php'; $query = mysql_query("SELECT * FROM gosip ORDER BY id_berita desc"); $json = '{"berita": ['; // bikin looping dech array yang di fetch while ($row = mysql_fetch_array ($query)) { //tanda kutip dua (") tidak diijinkan oleh string json, //maka akan kita replace dengan abjad ` //strip_tag berfungsi untuk menghilangkan tag-tag html pada string $char = '"'; $json .= '{"id":"'.$row['id_berita'].'", "judul":"'.str_replace($char,'`',strip_tags($row['judul'])).'", "gambar":"http://192.168.77.247/portalBerita/foto_berita/'.$row['gambar'].'"},'; } // buat menghilangkan koma diakhir array $json = substr($json,0,strlen($json)-1); $json .= ']}'; // print json echo $json; ?> Buat file gres dan beri nama detail_berita.php yang berfungsi menampilkan detail gosip saat list gosip diklik, buat kodenya ibarat berikut ini
<?php $kd=""; include './config/koneksi.php'; //$kd = $_GET['idberita']; if(isset($_GET['id_berita'])){ $kd=$_GET['id_berita']; } $query = mysql_query('SELECT * FROM gosip where id_berita="'.$kd.'"'); $json = '{"berita": ['; while($row=mysql_fetch_array($query)) { //tanda kutip dua (") tidak diijinkan oleh string json, maka akan kita replace dengan abjad ` //strip_tag berfungsi untuk menghilangkan tag-tag html pada string $char = '"'; $json .='{"id":"'.$row['id_berita'].'", "judul":"'.str_replace($char,'`',strip_tags($row["judul"])).'", "isi":"'.str_replace($char,'`',strip_tags($row["isi_berita"])).'", "gambar":"http://192.168.77.247/portalBerita/foto_berita/'.$row['gambar'].'"},'; } // buat menghilangkan koma diakhir array $json = substr($json,0,strlen($json)-1); $json .= ']}'; // print json echo $json; ?> Selanjutnya teman masukkan file tadi ke folder htdoc dan buat susunan foldernya ibarat berikut ini
File-file tadi yakni file json untuk nantinya dipakai untuk memanggil data dari server. Didalam file php di atas terdapat url server untuk mengakses file tersebut, silahkan diadaptasi berdasarkan struktur dan url/nomor IP milik sobat.
Selanjutnya kita akan menciptakan aplikasinya di Android Studio, ibarat biasa pertama teman buat project gres dengan nama Portal Berita dan untuk packagenya dengan nama blogsetyaaji.com
Saat mengatur activity, ubahlah nama MainActivity menjadi BeritaUtama, sedangkan activity_main.xml ubahlah menjadi berita_utama.xml
Selanjutnya teman instal dulu dependencies yang diharapkan di buld:grandle(Module app) dengan cara menyesuaikan kodenya ibarat di bawah ini
apply plugin: 'com.android.application' android { compileSdkVersion 24 buildToolsVersion "24.0.1" defaultConfig { applicationId "com.blogsetyaaji.portalberita2" minSdkVersion 15 targetSdkVersion 24 versionCode 1 versionName "1.0" } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } } useLibrary 'org.apache.http.legacy' } dependencies { compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:24.0.0' compile 'com.android.support:design:24.1.1' compile 'com.android.support:cardview-v7:24.1.1' compile 'de.hdodenhof:circleimageview:2.0.0' compile 'com.squareup.picasso:picasso:2.5.2' } Akan muncul pemberitahuan di atas instruksi editor pilih sync now
Pindah ke pengaturan layout, teman buka Berita_Utam.xml dan buat kodenya ibarat berikut ini
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical"> <TextView android:id="@+id/update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="center" android:textColor="#070707" android:textSize="10sp" /> <View android:layout_height="1dp" android:layout_width="fill_parent" android:background="#f5f2f2" /> <ListView android:id="@+id/list" android:layout_width="fill_parent" android:layout_height="wrap_content" android:divider="#f5f2f2" android:dividerHeight="1dp" /> </LinearLayout> Selanjutnya buat layout gres lagi dengan nama list_row.xml dan buat kodenya ibarat berikut ini
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:padding="2dp" android:orientation="horizontal"> <ImageView android:layout_width="50dp" android:layout_height="50dp" android:id="@+id/gambar"/> <TextView android:id="@+id/kode" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Kode" android:visibility="gone" /> <TextView android:id="@+id/judul" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Judul" android:layout_marginTop="5dp" android:layout_marginLeft="16dp"/> </LinearLayout> Buat file layout lagi dengan nama single_list_item.xml dan buat kodenya ibarat berikut ini
<?xml version="1.0" encoding="utf-8"?> <ScrollView xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" > <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="fill_parent" android:background="#fffefe" android:padding="10dp" android:layout_height="wrap_content"> <TextView android:id="@+id/judul" android:layout_width="wrap_content" android:layout_height="wrap_content" android:textSize="20dip" android:textStyle="bold" android:paddingTop="10dip" android:paddingBottom="5dip" android:textColor="#333333"/> <TextView android:id="@+id/detail" android:layout_width="wrap_content" android:textStyle="bold" android:textSize="12dip" android:paddingTop="5dip" android:paddingBottom="5dip" android:layout_height="wrap_content" android:textColor="#999999"/> <ImageView android:id="@+id/imageView1" android:layout_width="250dip" android:layout_gravity="center" android:layout_height="150dip" android:src="@drawable/no_image"/> <TextView android:id="@+id/content" android:layout_width="wrap_content" android:textSize="14dip" android:layout_height="wrap_content" android:textColor="#333333"/> </LinearLayout> </ScrollView> Setelah menciptakan file layout, kini kita menciptakan file java. Di sini kita membutuhkan beberapa file java dan library yang dipakai untuk memanggil dan menampilkan data json yang telah diparsing berupa file gambar.
Dan untuk pertama kali, silahkan teman buka file BeritaUtama.java dan buat kodenya ibarat berikut ini
package com.blogsetyaaji.portalberita2; import android.app.Activity; import android.app.ProgressDialog; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ListView; import android.widget.TextView; import org.apache.http.NameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Calendar; import java.util.HashMap; import java.util.List; public class BeritaUtama extends Activity { private ProgressDialog pDialog; JSONParser jParser = new JSONParser(); ArrayList<HashMap<String, String>> DaftarBerita = new ArrayList<HashMap<String, String>>(); private static String url_berita = "http://192.168.77.247/portalBerita/berita.php"; public static final String TAG_ID = "id"; public static final String TAG_JUDUL = "judul"; public static final String TAG_GAMBAR = "gambar"; JSONArray string_json = null; ListView list; LazyAdapter adapter; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.berita_utama); DaftarBerita = new ArrayList<HashMap<String, String>>(); new AmbilData().execute(); list = (ListView) findViewById(R.id.list); list.setOnItemClickListener(new OnItemClickListener() { @Override public void onItemClick(AdapterView<?> parent, View view, int position, long id) { HashMap<String, String> map = DaftarBerita.get(position); // Starting new intent Intent in = new Intent(getApplicationContext(), DetailBerita.class); in.putExtra(TAG_ID, map.get(TAG_ID)); in.putExtra(TAG_GAMBAR, map.get(TAG_GAMBAR)); startActivity(in); } }); } public void SetListViewAdapter(ArrayList<HashMap<String, String>> berita) { adapter = new LazyAdapter(this, berita); list.setAdapter(adapter); } class AmbilData extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(BeritaUtama.this); pDialog.setMessage("Mohon tunggu..."); pDialog.setIndeterminate(false); pDialog.setCancelable(false); pDialog.show(); } protected String doInBackground(String... args) { List<NameValuePair> params = new ArrayList<NameValuePair>(); JSONObject json = jParser.makeHttpRequest(url_berita, "GET", params); Log.i("Ini nilai json ", ">" + json); try { string_json = json.getJSONArray("berita"); for (int i = 0; i < string_json.length(); i++) { JSONObject c = string_json.getJSONObject(i); String id_berita = c.getString(TAG_ID); String judul = c.getString(TAG_JUDUL); String link_image = c.getString(TAG_GAMBAR); HashMap<String, String> map = new HashMap<String, String>(); map.put(TAG_ID, id_berita); map.put(TAG_JUDUL, judul); map.put(TAG_GAMBAR, link_image); DaftarBerita.add(map); } } catch (JSONException e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { pDialog.dismiss(); runOnUiThread(new Runnable() { public void run() { SetListViewAdapter(DaftarBerita); } }); } } } Selanjutnya, teman buat file java lagi dengan nama JSONParser.java dan buat kodenya ibarat berikut ini
package com.blogsetyaaji.portalberita2; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.io.UnsupportedEncodingException; import java.util.List; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; import org.apache.http.NameValuePair; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.entity.UrlEncodedFormEntity; import org.apache.http.client.methods.HttpGet; import org.apache.http.client.methods.HttpPost; import org.apache.http.client.utils.URLEncodedUtils; import org.apache.http.impl.client.DefaultHttpClient; import org.json.JSONException; import org.json.JSONObject; import android.util.Log; public class JSONParser { static InputStream is = null; static JSONObject jObj = null; static String json = ""; public JSONParser() { } // function get json from url // by making HTTP POST or GET mehtod public JSONObject makeHttpRequest(String url, String method, List<NameValuePair> params) { // Making HTTP request try { // check for request method if (method == "POST") { // request method is POST // defaultHttpClient DefaultHttpClient httpClient = new DefaultHttpClient(); HttpPost httpPost = new HttpPost(url); httpPost.setEntity(new UrlEncodedFormEntity(params)); HttpResponse httpResponse = httpClient.execute(httpPost); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } else if (method == "GET") { // request method is GET DefaultHttpClient httpClient = new DefaultHttpClient(); String paramString = URLEncodedUtils.format(params, "utf-8"); url += "?" + paramString; HttpGet httpGet = new HttpGet(url); HttpResponse httpResponse = httpClient.execute(httpGet); HttpEntity httpEntity = httpResponse.getEntity(); is = httpEntity.getContent(); } } catch (UnsupportedEncodingException e) { e.printStackTrace(); } catch (ClientProtocolException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } try { BufferedReader reader = new BufferedReader(new InputStreamReader( is, "iso-8859-1"), 8); StringBuilder sb = new StringBuilder(); String line = null; while ((line = reader.readLine()) != null) { sb.append(line + "\n"); } is.close(); json = sb.toString(); } catch (Exception e) { Log.e("Buffer Error", "Error converting result " + e.toString()); } // try parse the string to a JSON object try { jObj = new JSONObject(json); } catch (JSONException e) { Log.e("JSON Parser", "Error parsing data " + e.toString()); } // return JSON String return jObj; } } Buat file java gres dengan nama FileCache.java, buat kodenya ibarat berikut
package com.blogsetyaaji.portalberita2; import java.io.File; import android.content.Context; public class FileCache { private File cacheDir; public FileCache(Context context) { if (android.os.Environment.getExternalStorageState().equals( android.os.Environment.MEDIA_MOUNTED)) cacheDir = new File(android.os.Environment .getExternalStorageDirectory(), "LazyList"); else cacheDir = context.getCacheDir(); if (!cacheDir.exists()) cacheDir.mkdirs(); } public File getFile(String url) { String filename = String.valueOf(url.hashCode()); File f = new File(cacheDir, filename); return f; } public void clear() { File[] files = cacheDir.listFiles(); if (files == null) return; for (File f : files) f.delete(); } } ImageLoader.java
package com.blogsetyaaji.portalberita2; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.OutputStream; import java.net.HttpURLConnection; import java.net.URL; import java.util.Collections; import java.util.Map; import java.util.WeakHashMap; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import android.app.Activity; import android.content.Context; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.widget.ImageView; public class ImageLoader { MemoryCache memoryCache = new MemoryCache(); FileCache fileCache; private Map<ImageView, String> imageViews = Collections .synchronizedMap(new WeakHashMap<ImageView, String>()); ExecutorService executorService; public ImageLoader(Context context) { fileCache = new FileCache(context); executorService = Executors.newFixedThreadPool(5); } final int stub_id = R.drawable.no_image; public void DisplayImage(String url, ImageView imageView) { imageViews.put(imageView, url); Bitmap bitmap = memoryCache.get(url); if (bitmap != null) imageView.setImageBitmap(bitmap); else { queuePhoto(url, imageView); imageView.setImageResource(stub_id); } } private void queuePhoto(String url, ImageView imageView) { PhotoToLoad p = new PhotoToLoad(url, imageView); executorService.submit(new PhotosLoader(p)); } private Bitmap getBitmap(String url) { File f = fileCache.getFile(url); Bitmap b = decodeFile(f); if (b != null) return b; try { Bitmap bitmap = null; URL imageUrl = new URL(url); HttpURLConnection conn = (HttpURLConnection) imageUrl .openConnection(); conn.setConnectTimeout(30000); conn.setReadTimeout(30000); conn.setInstanceFollowRedirects(true); InputStream is = conn.getInputStream(); OutputStream os = new FileOutputStream(f); Utils.CopyStream(is, os); os.close(); bitmap = decodeFile(f); return bitmap; } catch (Exception ex) { ex.printStackTrace(); return null; } } private Bitmap decodeFile(File f) { try { BitmapFactory.Options o = new BitmapFactory.Options(); o.inJustDecodeBounds = true; BitmapFactory.decodeStream(new FileInputStream(f), null, o); final int REQUIRED_SIZE = 70; int width_tmp = o.outWidth, height_tmp = o.outHeight; int scale = 1; while (true) { if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE) break; width_tmp /= 2; height_tmp /= 2; scale *= 2; } BitmapFactory.Options o2 = new BitmapFactory.Options(); o2.inSampleSize = scale; return BitmapFactory.decodeStream(new FileInputStream(f), null, o2); } catch (FileNotFoundException e) { } return null; } private class PhotoToLoad { public String url; public ImageView imageView; public PhotoToLoad(String u, ImageView i) { url = u; imageView = i; } } class PhotosLoader implements Runnable { PhotoToLoad photoToLoad; PhotosLoader(PhotoToLoad photoToLoad) { this.photoToLoad = photoToLoad; } @Override public void run() { if (imageViewReused(photoToLoad)) return; Bitmap bmp = getBitmap(photoToLoad.url); memoryCache.put(photoToLoad.url, bmp); if (imageViewReused(photoToLoad)) return; BitmapDisplayer bd = new BitmapDisplayer(bmp, photoToLoad); Activity a = (Activity) photoToLoad.imageView.getContext(); a.runOnUiThread(bd); } } boolean imageViewReused(PhotoToLoad photoToLoad) { String tag = imageViews.get(photoToLoad.imageView); if (tag == null || !tag.equals(photoToLoad.url)) return true; return false; } class BitmapDisplayer implements Runnable { Bitmap bitmap; PhotoToLoad photoToLoad; public BitmapDisplayer(Bitmap b, PhotoToLoad p) { bitmap = b; photoToLoad = p; } public void run() { if (imageViewReused(photoToLoad)) return; if (bitmap != null) photoToLoad.imageView.setImageBitmap(bitmap); else photoToLoad.imageView.setImageResource(stub_id); } } public void clearCache() { memoryCache.clear(); fileCache.clear(); } } LazyAdapter.java
package com.blogsetyaaji.portalberita2; import java.util.ArrayList; import java.util.HashMap; import android.app.Activity; import android.content.Context; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.BaseAdapter; import android.widget.ImageView; import android.widget.TextView; import com.squareup.picasso.Picasso; public class LazyAdapter extends BaseAdapter { private Activity activity; private ArrayList<HashMap<String, String>> data; private static LayoutInflater inflater = null; // public ImageLoader imageLoader; public LazyAdapter(Activity a, ArrayList<HashMap<String, String>> d) { activity = a; data = d; inflater = (LayoutInflater) activity .getSystemService(Context.LAYOUT_INFLATER_SERVICE); // imageLoader = new ImageLoader(activity.getApplicationContext()); } public int getCount() { return data.size(); } public Object getItem(int position) { return position; } public long getItemId(int position) { return position; } public View getView(int position, View convertView, ViewGroup parent) { View vi = convertView; if (convertView == null) vi = inflater.inflate(R.layout.list_row, null); TextView id_berita = (TextView) vi.findViewById(R.id.kode); TextView judul = (TextView) vi.findViewById(R.id.judul); ImageView thumb_image = (ImageView) vi.findViewById(R.id.gambar); HashMap<String, String> daftar_berita = new HashMap<String, String>(); daftar_berita = data.get(position); id_berita.setText(daftar_berita.get(BeritaUtama.TAG_ID)); judul.setText(daftar_berita.get(BeritaUtama.TAG_JUDUL)); // imageLoader.DisplayImage(daftar_berita.get(BeritaUtama.TAG_GAMBAR),thumb_image); Picasso.with(activity.getApplicationContext()) .load(daftar_berita.get(BeritaUtama.TAG_GAMBAR)) .error(R.drawable.no_image) .into(thumb_image); return vi; } } MemoryCache.java
package com.blogsetyaaji.portalberita2; import java.lang.ref.SoftReference; import java.util.Collections; import java.util.HashMap; import java.util.Map; import android.graphics.Bitmap; public class MemoryCache { private Map<String, SoftReference<Bitmap>> cache = Collections .synchronizedMap(new HashMap<String, SoftReference<Bitmap>>()); public Bitmap get(String id) { if (!cache.containsKey(id)) return null; SoftReference<Bitmap> ref = cache.get(id); return ref.get(); } public void put(String id, Bitmap bitmap) { cache.put(id, new SoftReference<Bitmap>(bitmap)); } public void clear() { cache.clear(); } } Utils.java
package com.blogsetyaaji.portalberita2; import java.io.InputStream; import java.io.OutputStream; public class Utils { public static void CopyStream(InputStream is, OutputStream os) { final int buffer_size = 1024; try { byte[] bytes = new byte[buffer_size]; for (;;) { int count = is.read(bytes, 0, buffer_size); if (count == -1) break; os.write(bytes, 0, count); } } catch (Exception ex) { } } } DetailBerita.java
package com.blogsetyaaji.portalberita2; import android.app.Activity; import android.app.AlertDialog; import android.app.ProgressDialog; import android.content.DialogInterface; import android.content.Intent; import android.os.AsyncTask; import android.os.Bundle; import android.os.PersistableBundle; import android.view.Menu; import android.view.MenuItem; import android.widget.ImageView; import android.widget.TextView; import android.widget.Toast; import com.squareup.picasso.Picasso; import org.apache.http.NameValuePair; import org.apache.http.message.BasicNameValuePair; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; public class DetailBerita extends Activity { public ImageLoader imageLoader; { imageLoader = new ImageLoader(null); } JSONArray string_json = null; String idberita; private ProgressDialog pDialog; JSONParser jsonParser = new JSONParser(); public static final String TAG_ID = "id"; public static final String TAG_JUDUL = "judul"; public static final String TAG_ISI = "isi"; public static final String TAG_GAMBAR = "gambar"; private static final String url_detail_berita = "http://192.168.77.247/portalBerita/detailberita.php"; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.single_list_item); Intent i = getIntent(); idberita = i.getStringExtra(TAG_ID); Toast.makeText(getApplicationContext(), "id gosip = " + idberita, Toast.LENGTH_SHORT).show(); new AmbilDetailBerita().execute(); } class AmbilDetailBerita extends AsyncTask<String, String, String> { @Override protected void onPreExecute() { super.onPreExecute(); pDialog = new ProgressDialog(DetailBerita.this); pDialog.setMessage("Mohon Tunggu ... !"); pDialog.setIndeterminate(false); pDialog.setCancelable(true); pDialog.show(); } protected String doInBackground(String... params) { try { List<NameValuePair> params1 = new ArrayList<NameValuePair>(); params1.add(new BasicNameValuePair("id_berita",idberita)); JSONObject json = jsonParser.makeHttpRequest( url_detail_berita, "GET", params1); string_json = json.getJSONArray("berita"); runOnUiThread(new Runnable() { public void run() { ImageView thumb_image = (ImageView) findViewById(R.id.imageView1); TextView judul = (TextView) findViewById(R.id.judul); //TextView detail = (TextView) findViewById(R.id.detail); TextView isi = (TextView) findViewById(R.id.content); try { // ambil objek member pertama dari JSON Array JSONObject ar = string_json.getJSONObject(0); String judul_d = ar.getString(TAG_JUDUL); String isi_d = ar.getString(TAG_ISI); String url_detail_image = ar.getString(TAG_GAMBAR); judul.setText(judul_d); isi.setText(isi_d); // imageLoader.DisplayImage(ar.getString(TAG_GAMBAR),thumb_image); Picasso.with(getApplicationContext()) .load(url_detail_image) .error(R.drawable.no_image) .into(thumb_image); } catch (JSONException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (Exception e){ e.printStackTrace(); } } }); } catch (JSONException e) { e.printStackTrace(); } return null; } protected void onPostExecute(String file_url) { pDialog.dismiss(); } } } Tahap pembuatan file java dan library selesai, kini teman buka directory Manifest dan buka AndroidManifest.xml dan tambahkan user permission ibarat di bawah ini
<uses-permission android:name="android.permission.INTERNET"/> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/> Jika sudah semuanya, silahkan teman jalankan aplikasinya, maka tampilan dari aplikasi portal beritanya akan ibarat berikut ini
Dan ini video tampilan aplikasi portal gosip dari tutorial di atas
Silahkan kalau teman ingin melihat dan mendownload pola project dari tutorial ini, jangan lupa follow dan bintangnya.. 😂
Dan itulah cara menciptakan aplikasi portal gosip android dengan database mySQL dan JSON
Sekian artikel tentang Membuat Aplikasi Portal Berita Android dengan JSON agar bermanfaat, tetap ikuti untuk tutorial menarik lainya.
Tag :
Pemrograman,
Pemrograman Android





0 Komentar untuk "Membuat Aplikasi Portal Info Android Dengan Json"