Program Pendukung :
- Xampp/Wamp
- Eclipse
- SDK/Emulator
- Notepad
Buat database dengan nama crudandroid dan table dengan nama products
CREATE DATABASE crudandroid;
CREATE TABLE products( pid int(11) primary key auto_increment, name varchar(100) not null, price decimal(10,2) not null, description text, created_at timestamp default now(), updated_at timestamp );
Step 2,
Buat folder products di direktori C:\xampp\htdocs\products, kemudia buat file db_config.php dan db_connect.php
Step 3, Configuration PHP & Mysql
Buat kode di db_config.php seperti dibawah ini :
define('DB_USER', "root");
define('DB_PASSWORD', "");
define('DB_DATABASE', "crudandroid");
define('DB_SERVER', "localhost");
Step 4,
Buat kode di db_connect.php seperti dibawah ini :
class DB_CONNECT {
// constructor
function __construct() {
// untuk konek ke database
$this->connect();
}
// destructor
function __destruct() {
// tutup koneksi ke database
$this->close();
}
function connect() {
require_once __DIR__ . '/db_config.php';
$con = mysql_connect(DB_SERVER, DB_USER, DB_PASSWORD) or die(mysql_error());
$db = mysql_select_db(DB_DATABASE) or die(mysql_error()) or die(mysql_error());
return $con;
}
function close() {
mysql_close();
}
}
Step 5, CRUD PHP & Mysql
Operasi dasar create, update, delete di Mysql menggunakan PHP
Step 5 (a),
Buat file baru dengan nama create_product.php, file ini adalah untuk membuat product baru
$response = array();
if (isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("INSERT INTO products(name, price, description) VALUES('$name', '$price', '$description')");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully created.";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "Oops! An error occurred.";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
Step 5 (b),
Buat file baru dengan nama get_product_details.php, file ini untuk mengambil data yang ada di database products sesuai id yang dipilih
$response = array();
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
if (isset($_GET["pid"])) {
$pid = $_GET['pid'];
$result = mysql_query("SELECT * FROM products WHERE pid = $pid");
if (!empty($result)) {
if (mysql_num_rows($result) > 0) {
$result = mysql_fetch_array($result);
$product = array();
$product["pid"] = $result["pid"];
$product["name"] = $result["name"];
$product["price"] = $result["price"];
$product["description"] = $result["description"];
$product["created_at"] = $result["created_at"];
$product["updated_at"] = $result["updated_at"];
$response["success"] = 1;
$response["product"] = array();
array_push($response["product"], $product);
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
Step 5 (c),
Buat file baru dengan nama get_all_products.php, file ini untuk mengambil semua data yang ada di database products
$response = array();
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("SELECT * FROM products") or die(mysql_error());
if (mysql_num_rows($result) > 0) {
$response["products"] = array();
while ($row = mysql_fetch_array($result)) {
$product = array();
$product["pid"] = $row["pid"];
$product["name"] = $row["name"];
$product["price"] = $row["price"];
$product["created_at"] = $row["created_at"];
$product["updated_at"] = $row["updated_at"];
array_push($response["products"], $product);
}
$response["success"] = 1;
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No products found";
echo json_encode($response);
}
Step 5 (d),
Buat file baru dengan nama update_product.php, file ini untuk mengupdate data product sesuai yang dipilih
$response = array();
if (isset($_POST['pid']) && isset($_POST['name']) && isset($_POST['price']) && isset($_POST['description'])) {
$pid = $_POST['pid'];
$name = $_POST['name'];
$price = $_POST['price'];
$description = $_POST['description'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("UPDATE products SET name = '$name', price = '$price', description = '$description' WHERE pid = $pid");
if ($result) {
$response["success"] = 1;
$response["message"] = "Product successfully updated.";
echo json_encode($response);
} else { }
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
Step 5 (e),
Buat file baru dengan nama delete_product.php, file ini untuk menghapus data product sesuai yang dipilih
$response = array();
if (isset($_POST['pid'])) {
$pid = $_POST['pid'];
require_once __DIR__ . '/db_connect.php';
$db = new DB_CONNECT();
$result = mysql_query("DELETE FROM products WHERE pid = $pid");
if (mysql_affected_rows() > 0) {
$response["success"] = 1;
$response["message"] = "Product successfully deleted";
echo json_encode($response);
} else {
$response["success"] = 0;
$response["message"] = "No product found";
echo json_encode($response);
}
} else {
$response["success"] = 0;
$response["message"] = "Required field(s) is missing";
echo json_encode($response);
}
Step 6, Android
Buat sebuah project baru di Eclipse IDE,
1. Buat project baru di Eclipse IDE File ⇒ New ⇒ Android Project dan berikan Activity dengan nama class MainScreenActivity.
2. Buka file AndroidManifest.xml, kemudian modifikasi file tersebut seperti kode dibawah ini :
3. Buat file xml baru di res ⇒ layout folder dan berikan nama main_screen.xml<?xmlversion="1.0"encoding="utf-8"?>package="com.al.ambari"android:versionCode="1"android:versionName="1.0"><uses-sdkandroid:minSdkVersion="8"/><applicationandroid:configChanges="keyboardHidden|orientation"android:icon="@drawable/ic_launcher"android:label="@string/app_name"><activityandroid:name=".MainScreenActivity"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name=".AllProductsActivity"android:label="All Products"></activity>
<activityandroid:name=".NewProductActivity"android:label="Add New Product"></activity><activityandroid:name=".EditProductActivity"android:label="Edit Product"></activity>
</application><!-- Internet Permissions --><uses-permissionandroid:name="android.permission.INTERNET"/></manifest>
<?xmlversion="1.0"encoding="utf-8"?>android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"android:gravity="center_horizontal"><Buttonandroid:id="@+id/btnViewProducts"
android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="View Products"android:layout_marginTop="25dip"/><Buttonandroid:id="@+id/btnCreateProduct"
android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Add New Products"android:layout_marginTop="25dip"/></LinearLayout>
4. Buka file MainScreenActivity.java kemudian ikuti kode dibawah ini :
packagecom.al.ambari;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.widget.Button;publicclassMainScreenActivityextendsActivity{Button btnViewProducts;Button btnNewProduct;@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main_screen);btnViewProducts = (Button) findViewById(R.id.btnViewProducts);btnNewProduct = (Button) findViewById(R.id.btnCreateProduct);
btnViewProducts.setOnClickListener(newView.OnClickListener() {
@OverridepublicvoidonClick(View view) {Intent i =newIntent(getApplicationContext(), AllProductsActivity.class);startActivity(i);}});btnNewProduct.setOnClickListener(newView.OnClickListener() {@Override
publicvoidonClick(View view) {Intent i =newIntent(getApplicationContext(), NewProductActivity.class);
startActivity(i);}});}}
5. Buat 2 file xml baru di res ⇒ layout folder dan berikan masing-masing file tersebut dengan nama all_products.xml dan list_item.xml
all_products.xml
<?xmlversion="1.0"encoding="utf-8"?>android:layout_width="fill_parent"android:layout_height="fill_parent"android:orientation="vertical"><ListView
android:id="@android:id/list"android:layout_width="fill_parent"android:layout_height="wrap_content"/></LinearLayout>
list_item.xml
<?xmlversion="1.0"encoding="utf-8"?>android:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="vertical"><TextViewandroid:id="@+id/pid"
android:layout_width="fill_parent"android:layout_height="wrap_content"android:visibility="gone"/><TextView
android:id="@+id/name"android:layout_width="fill_parent"android:layout_height="wrap_content"android:paddingTop="6dip"android:paddingLeft="6dip"android:textSize="17dip"android:textStyle="bold"/></LinearLayout>
6. Buat file java baru/activity baru di src ⇒ (package name) folder dengan nama class AllProductsActivity.java
packagecom.al.ambari;importjava.util.ArrayList;importjava.util.HashMap;importjava.util.List;importorg.apache.http.NameValuePair;importorg.json.JSONArray;importorg.json.JSONException;importorg.json.JSONObject;importandroid.app.ListActivity;importandroid.app.ProgressDialog;importandroid.content.Intent;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.AdapterView.OnItemClickListener;importandroid.widget.ListAdapter;importandroid.widget.ListView;importandroid.widget.SimpleAdapter;importandroid.widget.TextView;publicclassAllProductsActivityextendsListActivity {// Progress DialogprivateProgressDialog pDialog;// Creating JSON Parser objectJSONParser jParser =newJSONParser();ArrayList<HashMap<String, String>> productsList;// url to get all products list// JSON Node namesprivatestaticfinalString TAG_SUCCESS ="success";privatestaticfinalString TAG_PRODUCTS ="products";privatestaticfinalString TAG_PID ="pid";privatestaticfinalString TAG_NAME ="name";// products JSONArrayJSONArray products =null;@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.all_products);// Hashmap for ListViewproductsList =newArrayList<HashMap<String, String>>();// Loading products in Background ThreadnewLoadAllProducts().execute();// Get listviewListView lv = getListView();// on seleting single product// launching Edit Product Screenlv.setOnItemClickListener(newOnItemClickListener() {@OverridepublicvoidonItemClick(AdapterView<?> parent, View view,intposition,longid) {// getting values from selected ListItemString pid = ((TextView) view.findViewById(R.id.pid)).getText().toString();// Starting new intentIntent in =newIntent(getApplicationContext(),EditProductActivity.class);// sending pid to next activityin.putExtra(TAG_PID, pid);// starting new activity and expecting some response backstartActivityForResult(in,100);}});}// Response from Edit Product Activity@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// if result code 100if(resultCode ==100) {// if result code 100 is received// means user edited/deleted product// reload this screen againIntent intent = getIntent();finish();startActivity(intent);}}/*** Background Async Task to Load all product by making HTTP Request* */classLoadAllProductsextendsAsyncTask<String, String, String> {/*** Before starting background thread Show Progress Dialog* */@OverrideprotectedvoidonPreExecute() {super.onPreExecute();pDialog =newProgressDialog(AllProductsActivity.this);pDialog.setMessage("Loading products. Please wait...");pDialog.setIndeterminate(false);pDialog.setCancelable(false);pDialog.show();}/*** getting All products from url* */protectedString doInBackground(String... args) {// Building ParametersList<NameValuePair> params =newArrayList<NameValuePair>();// getting JSON string from URLJSONObject json = jParser.makeHttpRequest(url_all_products,"GET", params);// Check your log cat for JSON reponseLog.d("All Products: ", json.toString());try{// Checking for SUCCESS TAGintsuccess = json.getInt(TAG_SUCCESS);if(success ==1) {// products found// Getting Array of Productsproducts = json.getJSONArray(TAG_PRODUCTS);// looping through All Productsfor(inti =0; i < products.length(); i++) {JSONObject c = products.getJSONObject(i);// Storing each json item in variableString id = c.getString(TAG_PID);String name = c.getString(TAG_NAME);// creating new HashMapHashMap<String, String> map =newHashMap<String, String>();// adding each child node to HashMap key => valuemap.put(TAG_PID, id);map.put(TAG_NAME, name);// adding HashList to ArrayListproductsList.add(map);}}else{// no products found// Launch Add New product ActivityIntent i =newIntent(getApplicationContext(),NewProductActivity.class);// Closing all previous activitiesi.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);startActivity(i);}}catch(JSONException e) {e.printStackTrace();}returnnull;}/*** After completing background task Dismiss the progress dialog* **/protectedvoidonPostExecute(String file_url) {// dismiss the dialog after getting all productspDialog.dismiss();// updating UI from Background ThreadrunOnUiThread(newRunnable() {publicvoidrun() {/*** Updating parsed JSON data into ListView* */ListAdapter adapter =newSimpleAdapter(AllProductsActivity.this, productsList,R.layout.list_item,newString[] { TAG_PID,TAG_NAME},newint[] { R.id.pid, R.id.name });// updating listviewsetListAdapter(adapter);}});}}}
7. Buat file xml baru di res ⇒ layout folder dengan nama add_product.xml
<?xmlversion="1.0"encoding="utf-8"?>android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- Name Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Product Name"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input Name --><EditTextandroid:id="@+id/inputName"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:singleLine="true"/><!-- Price Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Price"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input Price --><EditTextandroid:id="@+id/inputPrice"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:singleLine="true"android:inputType="numberDecimal"/><!-- Description Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Description"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input description --><EditTextandroid:id="@+id/inputDesc"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:lines="4"android:gravity="top"/><!-- Button Create Product --><Buttonandroid:id="@+id/btnCreateProduct"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Create Product"/></LinearLayout>
8. Buat file java baru di src ⇒ (package name) dengan nama NewProductActivity.java
packagecom.al.ambari;importjava.util.ArrayList;importjava.util.List;importorg.apache.http.NameValuePair;importorg.apache.http.message.BasicNameValuePair;importorg.json.JSONException;importorg.json.JSONObject;importandroid.app.Activity;importandroid.app.ProgressDialog;importandroid.content.Intent;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassNewProductActivityextendsActivity {// Progress DialogprivateProgressDialog pDialog;JSONParser jsonParser =newJSONParser();EditText inputName;EditText inputPrice;EditText inputDesc;// url to create new product// JSON Node namesprivatestaticfinalString TAG_SUCCESS ="success";@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.add_product);// Edit TextinputName = (EditText) findViewById(R.id.inputName);inputPrice = (EditText) findViewById(R.id.inputPrice);inputDesc = (EditText) findViewById(R.id.inputDesc);// Create buttonButton btnCreateProduct = (Button) findViewById(R.id.btnCreateProduct);// button click eventbtnCreateProduct.setOnClickListener(newView.OnClickListener() {@OverridepublicvoidonClick(View view) {// creating new product in background threadnewCreateNewProduct().execute();}});}/*** Background Async Task to Create new product* */classCreateNewProductextendsAsyncTask<String, String, String> {/*** Before starting background thread Show Progress Dialog* */@OverrideprotectedvoidonPreExecute() {super.onPreExecute();pDialog =newProgressDialog(NewProductActivity.this);pDialog.setMessage("Creating Product..");pDialog.setIndeterminate(false);pDialog.setCancelable(true);pDialog.show();}/*** Creating product* */protectedString doInBackground(String... args) {String name = inputName.getText().toString();String price = inputPrice.getText().toString();String description = inputDesc.getText().toString();// Building ParametersList<NameValuePair> params =newArrayList<NameValuePair>();params.add(newBasicNameValuePair("name", name));params.add(newBasicNameValuePair("price", price));params.add(newBasicNameValuePair("description", description));// getting JSON Object// Note that create product url accepts POST methodJSONObject json = jsonParser.makeHttpRequest(url_create_product,"POST", params);// check log cat fro responseLog.d("Create Response", json.toString());// check for success tagtry{intsuccess = json.getInt(TAG_SUCCESS);if(success ==1) {// successfully created productIntent i =newIntent(getApplicationContext(), AllProductsActivity.class);startActivity(i);// closing this screenfinish();}else{// failed to create product}}catch(JSONException e) {e.printStackTrace();}returnnull;}/*** After completing background task Dismiss the progress dialog* **/protectedvoidonPostExecute(String file_url) {// dismiss the dialog once donepDialog.dismiss();}}}
9. Buat file xml baru di res ⇒ layout folder dengan nama edit_product.xml.
<?xmlversion="1.0"encoding="utf-8"?>android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="vertical"><!-- Name Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Product Name"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input Name --><EditTextandroid:id="@+id/inputName"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:singleLine="true"/><!-- Price Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Price"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input Price --><EditTextandroid:id="@+id/inputPrice"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:singleLine="true"android:inputType="numberDecimal"/><!-- Description Label --><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Description"android:paddingLeft="10dip"android:paddingRight="10dip"android:paddingTop="10dip"android:textSize="17dip"/><!-- Input description --><EditTextandroid:id="@+id/inputDesc"android:layout_width="fill_parent"android:layout_height="wrap_content"android:layout_margin="5dip"android:layout_marginBottom="15dip"android:lines="4"android:gravity="top"/><LinearLayoutandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:orientation="horizontal"><!-- Button Create Product --><Buttonandroid:id="@+id/btnSave"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Save Changes"android:layout_weight="1"/><!-- Button Create Product --><Buttonandroid:id="@+id/btnDelete"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Delete"android:layout_weight="1"/></LinearLayout></LinearLayout>
10. Buat file java baru di src ⇒ (package name) dengan nama EditProductActivity.java
packagecom.al.ambari;importjava.util.ArrayList;importjava.util.List;importorg.apache.http.NameValuePair;importorg.apache.http.message.BasicNameValuePair;importorg.json.JSONArray;importorg.json.JSONException;importorg.json.JSONObject;importandroid.app.Activity;importandroid.app.ProgressDialog;importandroid.content.Intent;importandroid.os.AsyncTask;importandroid.os.Bundle;importandroid.util.Log;importandroid.view.View;importandroid.widget.Button;importandroid.widget.EditText;publicclassEditProductActivityextendsActivity {EditText txtName;EditText txtPrice;EditText txtDesc;EditText txtCreatedAt;Button btnSave;Button btnDelete;String pid;// Progress DialogprivateProgressDialog pDialog;// JSON parser classJSONParser jsonParser =newJSONParser();// single product urlprivatestaticfinalString url_product_detials ="http://10.0.2.2/products/get_product_details.php";// url to update product// url to delete product// JSON Node namesprivatestaticfinalString TAG_SUCCESS ="success";privatestaticfinalString TAG_PRODUCT ="product";privatestaticfinalString TAG_PID ="pid";privatestaticfinalString TAG_NAME ="name";privatestaticfinalString TAG_PRICE ="price";privatestaticfinalString TAG_DESCRIPTION ="description";@OverridepublicvoidonCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.edit_product);// save buttonbtnSave = (Button) findViewById(R.id.btnSave);btnDelete = (Button) findViewById(R.id.btnDelete);// getting product details from intentIntent i = getIntent();// getting product id (pid) from intentpid = i.getStringExtra(TAG_PID);// Getting complete product details in background threadnewGetProductDetails().execute();// save button click eventbtnSave.setOnClickListener(newView.OnClickListener() {@OverridepublicvoidonClick(View arg0) {// starting background task to update productnewSaveProductDetails().execute();}});// Delete button click eventbtnDelete.setOnClickListener(newView.OnClickListener() {@OverridepublicvoidonClick(View arg0) {// deleting product in background threadnewDeleteProduct().execute();}});}/*** Background Async Task to Get complete product details* */classGetProductDetailsextendsAsyncTask<String, String, String> {/*** Before starting background thread Show Progress Dialog* */@OverrideprotectedvoidonPreExecute() {super.onPreExecute();pDialog =newProgressDialog(EditProductActivity.this);pDialog.setMessage("Loading product details. Please wait...");pDialog.setIndeterminate(false);pDialog.setCancelable(true);pDialog.show();}/*** Getting product details in background thread* */protectedString doInBackground(String... params) {// updating UI from Background ThreadrunOnUiThread(newRunnable() {publicvoidrun() {// Check for success tagintsuccess;try{// Building ParametersList<NameValuePair> params =newArrayList<NameValuePair>();params.add(newBasicNameValuePair("pid", pid));// getting product details by making HTTP request// Note that product details url will use GET requestJSONObject json = jsonParser.makeHttpRequest(url_product_detials,"GET", params);// check your log for json responseLog.d("Single Product Details", json.toString());// json success tagsuccess = json.getInt(TAG_SUCCESS);if(success ==1) {// successfully received product detailsJSONArray productObj = json.getJSONArray(TAG_PRODUCT);// JSON Array// get first product object from JSON ArrayJSONObject product = productObj.getJSONObject(0);// product with this pid found// Edit TexttxtName = (EditText) findViewById(R.id.inputName);txtPrice = (EditText) findViewById(R.id.inputPrice);txtDesc = (EditText) findViewById(R.id.inputDesc);// display product data in EditTexttxtName.setText(product.getString(TAG_NAME));txtPrice.setText(product.getString(TAG_PRICE));txtDesc.setText(product.getString(TAG_DESCRIPTION));}else{// product with pid not found}}catch(JSONException e) {e.printStackTrace();}}});returnnull;}/*** After completing background task Dismiss the progress dialog* **/protectedvoidonPostExecute(String file_url) {// dismiss the dialog once got all detailspDialog.dismiss();}}/*** Background Async Task to Save product Details* */classSaveProductDetailsextendsAsyncTask<String, String, String> {/*** Before starting background thread Show Progress Dialog* */@OverrideprotectedvoidonPreExecute() {super.onPreExecute();pDialog =newProgressDialog(EditProductActivity.this);pDialog.setMessage("Saving product ...");pDialog.setIndeterminate(false);pDialog.setCancelable(true);pDialog.show();}/*** Saving product* */protectedString doInBackground(String... args) {// getting updated data from EditTextsString name = txtName.getText().toString();String price = txtPrice.getText().toString();String description = txtDesc.getText().toString();// Building ParametersList<NameValuePair> params =newArrayList<NameValuePair>();params.add(newBasicNameValuePair(TAG_PID, pid));params.add(newBasicNameValuePair(TAG_NAME, name));params.add(newBasicNameValuePair(TAG_PRICE, price));params.add(newBasicNameValuePair(TAG_DESCRIPTION, description));// sending modified data through http request// Notice that update product url accepts POST methodJSONObject json = jsonParser.makeHttpRequest(url_update_product,"POST", params);// check json success tagtry{intsuccess = json.getInt(TAG_SUCCESS);if(success ==1) {// successfully updatedIntent i = getIntent();// send result code 100 to notify about product updatesetResult(100, i);finish();}else{// failed to update product}}catch(JSONException e) {e.printStackTrace();}returnnull;}/*** After completing background task Dismiss the progress dialog* **/protectedvoidonPostExecute(String file_url) {// dismiss the dialog once product uupdatedpDialog.dismiss();}}/****************************************************************** Background Async Task to Delete Product* */classDeleteProductextendsAsyncTask<String, String, String> {/*** Before starting background thread Show Progress Dialog* */@OverrideprotectedvoidonPreExecute() {super.onPreExecute();pDialog =newProgressDialog(EditProductActivity.this);pDialog.setMessage("Deleting Product...");pDialog.setIndeterminate(false);pDialog.setCancelable(true);pDialog.show();}/*** Deleting product* */protectedString doInBackground(String... args) {// Check for success tagintsuccess;try{// Building ParametersList<NameValuePair> params =newArrayList<NameValuePair>();params.add(newBasicNameValuePair("pid", pid));// getting product details by making HTTP requestJSONObject json = jsonParser.makeHttpRequest(url_delete_product,"POST", params);// check your log for json responseLog.d("Delete Product", json.toString());// json success tagsuccess = json.getInt(TAG_SUCCESS);if(success ==1) {// product successfully deleted// notify previous activity by sending code 100Intent i = getIntent();// send result code 100 to notify about product deletionsetResult(100, i);finish();}}catch(JSONException e) {e.printStackTrace();}returnnull;}/*** After completing background task Dismiss the progress dialog* **/protectedvoidonPostExecute(String file_url) {// dismiss the dialog once product deletedpDialog.dismiss();}}}
11. Final, Buat file java baru di src ⇒ (package name) dengan nama JSONParser.java
packagecom.al.ambari;importjava.io.BufferedReader;importjava.io.IOException;importjava.io.InputStream;importjava.io.InputStreamReader;importjava.io.UnsupportedEncodingException;importjava.util.List;importorg.apache.http.HttpEntity;importorg.apache.http.HttpResponse;importorg.apache.http.NameValuePair;importorg.apache.http.client.ClientProtocolException;importorg.apache.http.client.entity.UrlEncodedFormEntity;importorg.apache.http.client.methods.HttpGet;importorg.apache.http.client.methods.HttpPost;importorg.apache.http.client.utils.URLEncodedUtils;importorg.apache.http.impl.client.DefaultHttpClient;importorg.json.JSONException;importorg.json.JSONObject;importandroid.util.Log;publicclassJSONParser {staticInputStream is =null;staticJSONObject jObj =null;staticString json ="";// constructorpublicJSONParser() {}// function get json from url// by making HTTP POST or GET mehtodpublicJSONObject makeHttpRequest(String url, String method,List<NameValuePair> params) {// Making HTTP requesttry{// check for request methodif(method =="POST"){// request method is POST// defaultHttpClientDefaultHttpClient httpClient =newDefaultHttpClient();HttpPost httpPost =newHttpPost(url);httpPost.setEntity(newUrlEncodedFormEntity(params));HttpResponse httpResponse = httpClient.execute(httpPost);HttpEntity httpEntity = httpResponse.getEntity();is = httpEntity.getContent();}elseif(method =="GET"){// request method is GETDefaultHttpClient httpClient =newDefaultHttpClient();String paramString = URLEncodedUtils.format(params,"utf-8");url +="?"+ paramString;HttpGet httpGet =newHttpGet(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 =newBufferedReader(newInputStreamReader(is,"iso-8859-1"),8);StringBuilder sb =newStringBuilder();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 objecttry{jObj =newJSONObject(json);}catch(JSONException e) {Log.e("JSON Parser","Error parsing data "+ e.toString());}// return JSON StringreturnjObj;}}





0 comments:
Post a Comment