Hello ALL,
Today i created one example for Parsing JSON and store response in sqlite database and display, update and delete operations from database.
Menifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.samir"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="SearchProduct" />
<activity android:name="AddUpdateValues"></activity>
</application>
</manifest>
MainActivity.java
package com.samir;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidadvance.db.DatabaseHelper;
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.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener {
private static final String rssFeed = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
private static final String ARRAY_NAME = "student";
private static final String ID = "id";
private static final String NAME = "name";
private static final String CITY = "city";
private static final String GENDER = "Gender";
private static final String AGE = "age";
private static final String BIRTH_DATE = "birthdate";
// List<Item> arrayOfList;
ArrayList<ProductModel> arrayOfList;
ListView listView;
NewsRowAdapter objAdapter;
DatabaseHelper db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arrayOfList = new ArrayList<ProductModel>();
listView = (ListView) findViewById(R.id.listview);
listView.setOnItemClickListener(this);
// arrayOfList = new ArrayList<Item>();
if (Utils.isNetworkAvailable(MainActivity.this)) {
new MyTask().execute(rssFeed);
} else {
showToast("No Network Connection!!!");
}
}
public void Search(View v) {
startActivity(new Intent(MainActivity.this, SearchProduct.class));
}
// public void Update(View v)
// {
// startActivity(new Intent(MainActivity.this,AddUpdateValues.class));
// }
// My AsyncTask start...
class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Loading...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
return Utils.getJSONString(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (null != pDialog && pDialog.isShowing()) {
pDialog.dismiss();
}
if (null == result || result.length() == 0) {
showToast("No data found from web!!!");
MainActivity.this.finish();
} else {
try {
JSONObject mainJson = new JSONObject(result);
JSONArray jsonArray = mainJson.getJSONArray(ARRAY_NAME);
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
db.emptyProduct();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject objJson = jsonArray.getJSONObject(i);
ProductModel prod = new ProductModel();
prod.productname = objJson.getString(NAME);
prod.productprice = objJson.getString(CITY);
//prod.idno= objJson.getString(ID);
prod.setProductname(objJson.getString(NAME));
prod.setProductprice(objJson.getString(CITY));
//prod.setIdno(objJson.getString(ID));
Log.e("-----size-----",
"-----size-----" + objJson.getString(NAME));
db.addProduct(prod);
// Item objItem = new Item();
//
// objItem.setId(objJson.getInt(ID));
// objItem.setName(objJson.getString(NAME));
// objItem.setCity(objJson.getString(CITY));
// objItem.setGender(objJson.getString(GENDER));
// objItem.setAge(objJson.getInt(AGE));
// objItem.setBirthdate(objJson.getString(BIRTH_DATE));
// arrayOfList.add(prod);
}
db.close();
} catch (JSONException e) {
e.printStackTrace();
}
// check data...
/*
* for (int i = 0; i < arrayOfList.size(); i++) { Item item =
* arrayOfList.get(i); System.out.println(item.getId());
*
* System.out.println(item.getId());
* System.out.println(item.getName());
* System.out.println(item.getCity());
* System.out.println(item.getGender());
* System.out.println(item.getAge());
* System.out.println(item.getBirthdate()); }
*/
// Collections.sort(arrayOfList, new Comparator<Item>() {
//
// @Override
// public int compare(Item lhs, Item rhs) {
// return (lhs.getAge() - rhs.getAge());
// }
// });
setAdapterToListview();
}
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
showDeleteDialog(position);
}
private void showDeleteDialog(final int position) {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
.create();
alertDialog.setTitle("Delete ??");
alertDialog.setMessage("Are you sure want to Delete it??");
// db. removeProduct(prod);
alertDialog.setButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setButton2("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// ProductModel model = new ProductModel();
String name = arrayOfList.get(position).getProductname();
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
db.removeProduct(name);
db.close();
arrayOfList.remove(position);
objAdapter.notifyDataSetChanged();
}
});
alertDialog.show();
}
public void setAdapterToListview() {
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
arrayOfList.clear();
arrayOfList = db.getProudcts();
Log.e("-----size-----", "-----size-----" + arrayOfList.size());
objAdapter = new NewsRowAdapter(MainActivity.this, R.layout.row,
arrayOfList);
listView.setAdapter(objAdapter);
}
public void showToast(String msg) {
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
}
}
NewsRowAdapter.java
package com.samir;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class NewsRowAdapter extends ArrayAdapter<ProductModel> {
private Activity activity;
private List<ProductModel> items;
private ProductModel objBean;
private int row;
public NewsRowAdapter(Activity act, int resource, List<ProductModel> arrayList) {
super(act, resource, arrayList);
this.activity = act;
this.row = resource;
this.items = arrayList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.tvName = (TextView) view.findViewById(R.id.tvname);
holder.tvCity = (TextView) view.findViewById(R.id.tvcity);
holder.tvBDate = (TextView) view.findViewById(R.id.tvbdate);
holder.tvGender = (TextView) view.findViewById(R.id.tvgender);
holder.tvAge = (TextView) view.findViewById(R.id.tvage);
holder.tvCity.setText(Html.fromHtml(objBean.getProductname()));
holder.tvName.setText(Html.fromHtml(objBean.getProductprice()));
return view;
}
public class ViewHolder {
public TextView tvName, tvCity, tvBDate, tvGender, tvAge;
}
}
ProductModel.java
package com.samir;
public class ProductModel {
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public String getProductprice() {
return productprice;
}
public void setProductprice(String productprice) {
this.productprice = productprice;
}
public String idno="", productname="", productprice="";
public String getIdno() {
return idno;
}
public void setIdno(String idno) {
this.idno = idno;
}
}
row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bg"
android:orientation="vertical" >
<TextView
android:id="@+id/tvname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/tvcity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvname"
android:layout_marginLeft="5dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
<TextView
android:id="@+id/tvbdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvcity"
android:layout_marginLeft="5dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
<TextView
android:id="@+id/tvgender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="15dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/tvage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/tvgender"
android:layout_marginRight="15dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
</RelativeLayout>
searchproduct.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/searchlinear"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
android:text="Search Record"
android:textSize="18dp"
android:textStyle="bold" />
<ProgressBar
android:id="@+id/showprogress"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingRight="10dp"
android:visibility="gone" />
</LinearLayout>
<EditText
android:id="@+id/txtsearchproduct"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="search"
android:lines="1"
android:paddingLeft="25dp"
android:visibility="visible" >
</EditText>
<AutoCompleteTextView
android:id="@+id/myautocomplete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:hint="search"
android:lines="1"
android:visibility="gone" />
<ListView
android:id="@+id/searchlistview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
Download Source Code
Today i created one example for Parsing JSON and store response in sqlite database and display, update and delete operations from database.
Menifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.samir"
android:versionCode="1"
android:versionName="1.0" >
<uses-sdk android:minSdkVersion="8" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.INTERNET" />
<application
android:icon="@drawable/ic_launcher"
android:label="@string/app_name" >
<activity
android:name=".MainActivity"
android:label="@string/app_name"
android:screenOrientation="portrait" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="SearchProduct" />
<activity android:name="AddUpdateValues"></activity>
</application>
</manifest>
MainActivity.java
package com.samir;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.androidadvance.db.DatabaseHelper;
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.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.ListView;
import android.widget.Toast;
public class MainActivity extends Activity implements OnItemClickListener {
private static final String rssFeed = "https://www.dropbox.com/s/rhk01nqlyj5gixl/jsonparsing.txt?dl=1";
private static final String ARRAY_NAME = "student";
private static final String ID = "id";
private static final String NAME = "name";
private static final String CITY = "city";
private static final String GENDER = "Gender";
private static final String AGE = "age";
private static final String BIRTH_DATE = "birthdate";
// List<Item> arrayOfList;
ArrayList<ProductModel> arrayOfList;
ListView listView;
NewsRowAdapter objAdapter;
DatabaseHelper db;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
arrayOfList = new ArrayList<ProductModel>();
listView = (ListView) findViewById(R.id.listview);
listView.setOnItemClickListener(this);
// arrayOfList = new ArrayList<Item>();
if (Utils.isNetworkAvailable(MainActivity.this)) {
new MyTask().execute(rssFeed);
} else {
showToast("No Network Connection!!!");
}
}
public void Search(View v) {
startActivity(new Intent(MainActivity.this, SearchProduct.class));
}
// public void Update(View v)
// {
// startActivity(new Intent(MainActivity.this,AddUpdateValues.class));
// }
// My AsyncTask start...
class MyTask extends AsyncTask<String, Void, String> {
ProgressDialog pDialog;
@Override
protected void onPreExecute() {
super.onPreExecute();
pDialog = new ProgressDialog(MainActivity.this);
pDialog.setMessage("Loading...");
pDialog.setCancelable(false);
pDialog.show();
}
@Override
protected String doInBackground(String... params) {
return Utils.getJSONString(params[0]);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
if (null != pDialog && pDialog.isShowing()) {
pDialog.dismiss();
}
if (null == result || result.length() == 0) {
showToast("No data found from web!!!");
MainActivity.this.finish();
} else {
try {
JSONObject mainJson = new JSONObject(result);
JSONArray jsonArray = mainJson.getJSONArray(ARRAY_NAME);
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
db.emptyProduct();
for (int i = 0; i < jsonArray.length(); i++) {
JSONObject objJson = jsonArray.getJSONObject(i);
ProductModel prod = new ProductModel();
prod.productname = objJson.getString(NAME);
prod.productprice = objJson.getString(CITY);
//prod.idno= objJson.getString(ID);
prod.setProductname(objJson.getString(NAME));
prod.setProductprice(objJson.getString(CITY));
//prod.setIdno(objJson.getString(ID));
Log.e("-----size-----",
"-----size-----" + objJson.getString(NAME));
db.addProduct(prod);
// Item objItem = new Item();
//
// objItem.setId(objJson.getInt(ID));
// objItem.setName(objJson.getString(NAME));
// objItem.setCity(objJson.getString(CITY));
// objItem.setGender(objJson.getString(GENDER));
// objItem.setAge(objJson.getInt(AGE));
// objItem.setBirthdate(objJson.getString(BIRTH_DATE));
// arrayOfList.add(prod);
}
db.close();
} catch (JSONException e) {
e.printStackTrace();
}
// check data...
/*
* for (int i = 0; i < arrayOfList.size(); i++) { Item item =
* arrayOfList.get(i); System.out.println(item.getId());
*
* System.out.println(item.getId());
* System.out.println(item.getName());
* System.out.println(item.getCity());
* System.out.println(item.getGender());
* System.out.println(item.getAge());
* System.out.println(item.getBirthdate()); }
*/
// Collections.sort(arrayOfList, new Comparator<Item>() {
//
// @Override
// public int compare(Item lhs, Item rhs) {
// return (lhs.getAge() - rhs.getAge());
// }
// });
setAdapterToListview();
}
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position,
long id) {
showDeleteDialog(position);
}
private void showDeleteDialog(final int position) {
AlertDialog alertDialog = new AlertDialog.Builder(MainActivity.this)
.create();
alertDialog.setTitle("Delete ??");
alertDialog.setMessage("Are you sure want to Delete it??");
// db. removeProduct(prod);
alertDialog.setButton("No", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
});
alertDialog.setButton2("Yes", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// ProductModel model = new ProductModel();
String name = arrayOfList.get(position).getProductname();
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
db.removeProduct(name);
db.close();
arrayOfList.remove(position);
objAdapter.notifyDataSetChanged();
}
});
alertDialog.show();
}
public void setAdapterToListview() {
db = new DatabaseHelper(MainActivity.this);
db.getWritableDatabase();
arrayOfList.clear();
arrayOfList = db.getProudcts();
Log.e("-----size-----", "-----size-----" + arrayOfList.size());
objAdapter = new NewsRowAdapter(MainActivity.this, R.layout.row,
arrayOfList);
listView.setAdapter(objAdapter);
}
public void showToast(String msg) {
Toast.makeText(MainActivity.this, msg, Toast.LENGTH_LONG).show();
}
}
NewsRowAdapter.java
package com.samir;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.text.Html;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.TextView;
public class NewsRowAdapter extends ArrayAdapter<ProductModel> {
private Activity activity;
private List<ProductModel> items;
private ProductModel objBean;
private int row;
public NewsRowAdapter(Activity act, int resource, List<ProductModel> arrayList) {
super(act, resource, arrayList);
this.activity = act;
this.row = resource;
this.items = arrayList;
}
@Override
public View getView(final int position, View convertView, ViewGroup parent) {
View view = convertView;
ViewHolder holder;
if (view == null) {
LayoutInflater inflater = (LayoutInflater) activity
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = inflater.inflate(row, null);
holder = new ViewHolder();
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
if ((items == null) || ((position + 1) > items.size()))
return view;
objBean = items.get(position);
holder.tvName = (TextView) view.findViewById(R.id.tvname);
holder.tvCity = (TextView) view.findViewById(R.id.tvcity);
holder.tvBDate = (TextView) view.findViewById(R.id.tvbdate);
holder.tvGender = (TextView) view.findViewById(R.id.tvgender);
holder.tvAge = (TextView) view.findViewById(R.id.tvage);
holder.tvCity.setText(Html.fromHtml(objBean.getProductname()));
holder.tvName.setText(Html.fromHtml(objBean.getProductprice()));
return view;
}
public class ViewHolder {
public TextView tvName, tvCity, tvBDate, tvGender, tvAge;
}
}
ProductModel.java
package com.samir;
public class ProductModel {
public String getProductname() {
return productname;
}
public void setProductname(String productname) {
this.productname = productname;
}
public String getProductprice() {
return productprice;
}
public void setProductprice(String productprice) {
this.productprice = productprice;
}
public String idno="", productname="", productprice="";
public String getIdno() {
return idno;
}
public void setIdno(String idno) {
this.idno = idno;
}
}
SearchProduct.java
package com.samir;
import java.util.ArrayList;
import java.util.List;
import com.androidadvance.db.DatabaseHelper;
import android.app.Activity;
import android.content.Context;
import android.graphics.Color;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.text.Editable;
import android.text.TextWatcher;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.AutoCompleteTextView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.RelativeLayout;
import android.widget.TextView;
import android.widget.Toast;
public class SearchProduct extends Activity implements TextWatcher {
EditText _searchbox;
private ProgressBar showprogress;
searchtask dotask;
private ArrayList<ProductModel> _productList;
ListView _listview;
DatabaseHelper db;
public AutoCompleteTextView myAutoComplete;
private ArrayList<ProductModel> _productList_Temp;
String query = "";
ArrayList<ProductModel> modelarray;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.searchproduct);
db = new DatabaseHelper(getApplicationContext());
db.getWritableDatabase();
modelarray=new ArrayList<ProductModel>();
modelarray.clear();
modelarray = db.getProudcts();
Log.e("-----size-----", "-----size-----" + modelarray.size());
db.close();
_searchbox = (EditText) findViewById(R.id.txtsearchproduct);
showprogress = (ProgressBar) findViewById(R.id.showprogress);
_listview = (ListView) findViewById(R.id.searchlistview);
_searchbox.addTextChangedListener(textwatcher);
}
Runnable runn = new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
handlersearch.sendEmptyMessage(0);
}
};
TextWatcher textwatcher = new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before,
int count) {
Log.i("---onTextChanged ----", "---------onTextChanged ----");
if (_searchbox.getText().toString().length() > 1) {
query = _searchbox.getText().toString().replace(" ", "%20");
handlersearch.removeCallbacks(runn);
handlersearch.post(runn);
} else {
showprogress.setVisibility(View.GONE);
if (dotask != null) {
if (dotask.getStatus().equals(AsyncTask.Status.RUNNING)) {
dotask.cancel(true);
}
}
handlersearch.removeCallbacks(runn);
_productList = new ArrayList<ProductModel>();
_productList.clear();
_listview.setAdapter(new CustomBaseAdapter(SearchProduct.this,
_productList));
}
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
}
};
Handler handlersearch = new Handler() {
public void handleMessage(android.os.Message msg) {
dotask = new searchtask();
dotask.execute();
};
};
private class searchtask extends AsyncTask<Void, Void, Void> {
protected void onPreExecute() {
showprogress.setVisibility(View.VISIBLE);
};
protected void onPostExecute(Void param) {
// animation.dismiss();
showprogress.setVisibility(View.GONE);
if (_productList == null)
return;
ArrayList<String> item = new ArrayList<String>();
for (int i = 0; i < _productList.size(); i++) {
item.add(_productList.get(i).productname);
}
myAutoComplete = (AutoCompleteTextView) findViewById(R.id.myautocomplete);
myAutoComplete.addTextChangedListener(SearchProduct.this);
myAutoComplete.setAdapter(new ArrayAdapter<String>(
SearchProduct.this,
android.R.layout.simple_dropdown_item_1line, item));
_productList_Temp = new ArrayList<ProductModel>();
for (int i = 0; i < _productList.size(); i++) {
_productList_Temp.add(_productList.get(i));
}
_listview.setAdapter(new CustomBaseAdapter(SearchProduct.this,
_productList_Temp));
}
@Override
protected Void doInBackground(Void... params) {
db = new DatabaseHelper(getApplicationContext());
db.getWritableDatabase();
ArrayList<ProductModel> product_list = db.getProudcts(query);
System.out.println("product_list.size>>>>>" + product_list.size());
for (int i = 0; i < product_list.size(); i++) {
String tidno = product_list.get(i).getIdno();
System.out.println("tidno>>>>>" + tidno);
String tname = product_list.get(i).getProductname();
String tprice = product_list.get(i).getProductprice();
ProductModel _ProductModel = new ProductModel();
_ProductModel.setIdno(tidno);
_ProductModel.setProductname(tname);
_ProductModel.setProductprice(tprice);
_productList.add(_ProductModel);
}
// _productList = _parser.getProductList();
return null;
}
}
private class CustomBaseAdapter extends BaseAdapter {
LayoutInflater _inflater;
List<ProductModel> productList;
public CustomBaseAdapter(Context context, List<ProductModel> productList) {
_inflater = LayoutInflater.from(context);
this.productList = productList;
}
public int getCount() {
// TODO Auto-generated method stub
return productList.size();
}
public Object getItem(int position) {
// TODO Auto-generated method stub
return position;
}
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder _holder;
if (convertView == null) {
convertView = _inflater.inflate(R.layout.product_list, null);
_holder = new ViewHolder();
_holder.title = (TextView) convertView
.findViewById(R.id.txt_title_text);
_holder.price = (TextView) convertView
.findViewById(R.id.txt_price);
convertView.setTag(_holder);
} else {
_holder = (ViewHolder) convertView.getTag();
}
_holder.title.setText(productList.get(position).productname.trim());
_holder.price.setText(productList.get(position).productprice);
return convertView;
}
private class ViewHolder {
TextView title;
TextView price;
}
}
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
}
Utils.java
package com.samir;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import android.app.Activity;
import android.content.Context;
import android.net.ConnectivityManager;
import android.net.NetworkInfo;
public class Utils {
public static String getJSONString(String url) {
String jsonString = null;
HttpURLConnection linkConnection = null;
try {
URL linkurl = new URL(url);
linkConnection = (HttpURLConnection) linkurl.openConnection();
int responseCode = linkConnection.getResponseCode();
if (responseCode == HttpURLConnection.HTTP_OK) {
InputStream linkinStream = linkConnection.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int j = 0;
while ((j = linkinStream.read()) != -1) {
baos.write(j);
}
byte[] data = baos.toByteArray();
jsonString = new String(data);
}
} catch (Exception e) {
e.printStackTrace();
} finally {
if (linkConnection != null) {
linkConnection.disconnect();
}
}
return jsonString;
}
public static boolean isNetworkAvailable(Activity activity) {
ConnectivityManager connectivity = (ConnectivityManager) activity
.getSystemService(Context.CONNECTIVITY_SERVICE);
if (connectivity == null) {
return false;
} else {
NetworkInfo[] info = connectivity.getAllNetworkInfo();
if (info != null) {
for (int i = 0; i < info.length; i++) {
if (info[i].getState() == NetworkInfo.State.CONNECTED) {
return true;
}
}
}
}
return false;
}
}
DatabaseHelper.java
package com.androidadvance.db;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import com.samir.ProductModel;
import android.content.ContentValues;
import android.content.Context;
import android.content.SharedPreferences;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
import android.util.Log;
public class DatabaseHelper extends SQLiteOpenHelper {
public static String DATABASENAME = "androidadvancesqlite";
public static String PRODUCTTABLE = "products";
public static String colProductId = "id";
public static String _colProductid = "productidno";
public static String colProductName = "productname";
public static String colProductPrice = "productprice";
private ArrayList<ProductModel> cartList = new ArrayList<ProductModel>();
Context c;
public DatabaseHelper(Context context) {
super(context, DATABASENAME, null, 33);
c = context;
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL("CREATE TABLE if not exists producttable(id INTEGER PRIMARY KEY AUTOINCREMENT,"
+ "productidno"
+ " TEXT ,"
+ "productname"
+ " TEXT,"
+ "productprice" + " TEXT)");
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS" + PRODUCTTABLE);
onCreate(db);
}
public void addProduct(ProductModel productitem) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("productidno", productitem.idno);
contentValues.put("productname", productitem.productname);
contentValues.put("productprice", productitem.productprice);
db.insert("producttable", null, contentValues);
Log.e("-----size-----", "-----size-----" + productitem.productname);
db.close();
}
// update
public void updateProduct(ProductModel productList) {
SQLiteDatabase db = this.getWritableDatabase();
ContentValues contentValues = new ContentValues();
contentValues.put("productname", productList.productname);
contentValues.put("productprice", productList.productprice);
db.update("producttable", contentValues, "productidno="
+ productList.idno, null);
db.close();
}
public void emptyProduct() {
try {
SQLiteDatabase db = this.getWritableDatabase();
db.execSQL("delete from producttable");
db.close();
} catch (Exception e) {
e.printStackTrace();
}
}
public void removeProduct(String productname) {
try {
String[] args = { productname };
getWritableDatabase().delete("producttable", "productname=?", args);
} catch (Exception e) {
e.printStackTrace();
}
}
public ArrayList<ProductModel> getProudcts() {
cartList.clear();
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.rawQuery("select * from producttable", null);
if (cursor.getCount() != 0) {
if (cursor.moveToFirst()) {
do {
ProductModel item = new ProductModel();
item.idno = cursor.getString(cursor
.getColumnIndex("productidno"));
item.productname = cursor.getString(cursor
.getColumnIndex("productname"));
item.productprice = cursor.getString(cursor
.getColumnIndex("productprice"));
cartList.add(item);
} while (cursor.moveToNext());
}
}
cursor.close();
db.close();
return cartList;
}
public ArrayList<ProductModel> getProudcts(String record) {
cartList.clear();
SQLiteDatabase db = this.getWritableDatabase();
Cursor cursor = db.query(true, "producttable", new String[] {
"productidno", "productname", "productprice" }, "productname"
+ "=?", new String[] { record }, null, null, null, null);
if (cursor.getCount() != 0) {
if (cursor.moveToFirst()) {
do {
ProductModel item = new ProductModel();
item.idno = cursor.getString(cursor
.getColumnIndex("productidno"));
item.productname = cursor.getString(cursor
.getColumnIndex("productname"));
item.productprice = cursor.getString(cursor
.getColumnIndex("productprice"));
cartList.add(item);
} while (cursor.moveToNext());
}
}
cursor.close();
db.close();
return cartList;
}
}
main.xml
<?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" >
<ListView
android:id="@+id/listview" android:layout_weight="1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
>
</ListView>
<Button android:text="search" android:onClick="Search"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
<Button android:text="update"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
</LinearLayout>
product_list.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/category_list_id"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@android:color/white"
android:paddingBottom="1dp" >
<LinearLayout
android:id="@+id/ll_place_name_use"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_centerVertical="true"
android:layout_marginLeft="10dp"
android:layout_marginTop="10dp"
android:orientation="vertical"
android:paddingRight="8dp" >
<TextView
android:id="@+id/txt_title_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:maxLines="3"
android:padding="2dp"
android:text="aaa"
android:textColor="@android:color/black"
android:textSize="16sp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/txt_price"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_weight="1"
android:padding="2dp"
android:text="1000"
android:textColor="@android:color/black"
android:textSize="14sp"
android:visibility="visible" >
</TextView>
</LinearLayout>
</RelativeLayout>
row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/relativelay"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@drawable/list_bg"
android:orientation="vertical" >
<TextView
android:id="@+id/tvname"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_marginLeft="5dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/tvcity"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvname"
android:layout_marginLeft="5dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
<TextView
android:id="@+id/tvbdate"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_below="@+id/tvcity"
android:layout_marginLeft="5dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
<TextView
android:id="@+id/tvgender"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_alignParentTop="true"
android:layout_marginRight="15dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp"
android:textStyle="bold" >
</TextView>
<TextView
android:id="@+id/tvage"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentRight="true"
android:layout_below="@+id/tvgender"
android:layout_marginRight="15dip"
android:layout_marginTop="3dip"
android:maxLines="1"
android:text=""
android:textColor="@android:color/black"
android:textSize="14dp" >
</TextView>
</RelativeLayout>
searchproduct.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/searchlinear"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center_horizontal"
android:orientation="vertical" >
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="15dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:gravity="center"
android:text="Search Record"
android:textSize="18dp"
android:textStyle="bold" />
<ProgressBar
android:id="@+id/showprogress"
style="?android:attr/progressBarStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:paddingRight="10dp"
android:visibility="gone" />
</LinearLayout>
<EditText
android:id="@+id/txtsearchproduct"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:hint="search"
android:lines="1"
android:paddingLeft="25dp"
android:visibility="visible" >
</EditText>
<AutoCompleteTextView
android:id="@+id/myautocomplete"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:completionThreshold="1"
android:hint="search"
android:lines="1"
android:visibility="gone" />
<ListView
android:id="@+id/searchlistview"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
Download Source Code