Sunday, 8 December 2013

Android Json Parsing + Sqlite Database Example

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;
}


}


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

22 comments:

  1. nice tutorial :) i will try it, i need tutorial to get data via json and store to sqlite android...

    this my blog http://tricktux.blogspot.com gretings form me....

    ReplyDelete
  2. 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));

    WHY?
    This is dublication!!!

    ReplyDelete
    Replies
    1. did you ever get a working solution of this?

      Delete
    2. This code is not a perfect ... to get json object

      Delete
  3. Could you or somebody please post a working solution to this?

    ReplyDelete
  4. Yippeee…dude, I feel like walking over and giving you a big bear hug. Thank you for taking time to tell me all about freelance job opportunities. Can you give some advice on where I can upload my stuff? I am a wannabe music composer and have quite a few original pieces that I am eagerly waiting to sell. I hit upon some cool sites like how to make a lyric video,professional logo design
    . Do you know of more such places on the internet where there are people to buy my work? Just can’t wait to begin.

    ReplyDelete
  5. Wow amazing i saw the article with execution models you had posted. It was such informative. Really its a wonderful article. Thank you for sharing and please keep update like this type of article because i want to learn more relevant to this topic.

    Android Training

    ReplyDelete
  6. This blog provides useful information about new techniques and concepts.very impressive lines are given which is very attractive.
    java training in chennai

    ReplyDelete
  7. Really, these quotes are the holistic approach towards mindfulness. In fact, all of your posts are. Proudly saying I’m getting fruitfulness out of it what you write and share. Thank you so much to both of you.

    Online Training in Chennai

    ReplyDelete
  8. Great information shared in this blog. Helps in gaining concepts about new information and concepts.Awsome information provided.Very useful for the beginners.
    SEO Training in ChennaiSEO Training in Chennai

    ReplyDelete
  9. Your thinking toward the respective issue is awesome also the idea behind the blog is very interesting which would bring a new evolution in respective field. Thanks for sharing.

    SEO Company in India

    ReplyDelete
  10. This blog is having the general information. Got a creative work and this is very different one.We have to develop our creativity mind.This blog helps for this. Thank you for this blog. This is very interesting and useful.
    Housekeeping Services in Chennai


    ReplyDelete
  11. It's interesting that many of the bloggers to helped clarify a few things for me as well as giving.Most of ideas can be nice content.The people to give them a good shake to get your point and across the command.

    Digital Marketing Company in Chennai

    ReplyDelete
  12. It is amazing and wonderful to visit your site.Thanks for sharing this information,this is useful to me...
    Android Training in Chennai
    Ios Training in Chennai

    ReplyDelete
  13. You have provided an nice article, Thank you very much for this one. And i hope this will be useful for many people.. and i am waiting for your next post keep on updating these kinds of knowledgeable things...
    Texting API
    Text message marketing
    Digital Mobile Marketing
    Mobile Marketing Services
    Mobile marketing companies
    Fitness SMS

    ReplyDelete
  14. Excellent Article
    Leading Local Search Engine in India
    you can Find AC Mechanic in Chennai
    you can Find Automobile Batteries Chennai
    you can Find Beauty and Spa Chennai
    you can Find Best Bike Mechanics Chennai
    you can Find Leading Call Taxi Chennai
    you can Find 24 Hours Pharmacy Chennai
    You can find All your requirements in call360 for more details & search Visit http://www.call360.in

    ReplyDelete
  15. It has been just unfathomably liberal with you to give straightforwardly what precisely numerous people would've promoted for an eBook to wind up making some money for their end, basically given that you could have attempted it in the occasion you needed.

    Bigdata Training in Chennai

    ReplyDelete
  16. This article is very much helpful and i hope this will be an useful information for the needed one. Keep on updating these kinds of informative things...
    PSD to Wordpress
    wordpress website development

    ReplyDelete
  17. The Mobile Accessories is a largest mobile retail Chain dealing in leading international and Indian Brands of mobile phones and accessories headquartered with using special offers and low cost of the latest branded mobile phones. This is amazing offers with some of days.

    Mobile Showrooms in OMR

    ReplyDelete
  18. Its really an Excellent post. I just stumbled upon your blog and wanted to say that I have really enjoyed reading your blog. Thanks for sharing....

    Restaurant in OMR
    Apartments in OMR
    Villas in OMR
    Resorts in OMR

    ReplyDelete