Custom Listview with Search and Checkbox Example:-
Layouts:-
listviewmain.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:background="#0f4c5c"
android:focusableInTouchMode="true"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/edtSearch"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:textColorHint="#000"
android:background="@drawable/edittextshape"
android:drawablePadding="5dp"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:hint="SEARCH"
android:textColor="#000"
android:inputType="text"
android:singleLine="true"
android:textSize="14dp"/>
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:divider="@color/list_divider"
android:dividerHeight="0.5dp"
android:paddingTop="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="right"
android:gravity="right">
<LinearLayout
android:id="@+id/wrongappro"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="3dp"
android:layout_marginRight="14dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/btnDone"
android:layout_width="40dp"
android:layout_height="40dp"
android:text=""
android:background="@drawable/roundicon"
android:textColor="#ff0000"
android:gravity="center"
android:textSize="16dp"
android:textStyle="bold"
android:layout_gravity="center" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
listviewmain_row.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/txtItemName0"
android:layout_width="1dp"
android:layout_height="1dp"
android:ellipsize="end"
android:text="No data"
android:textAllCaps="true"
android:textColor="#fff"
android:textSize="13dp"
android:visibility="invisible" />
<TextView
android:id="@+id/txtItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text="No data"
android:textAllCaps="true"
android:textColor="#fff"
android:textSize="15dp"
android:textStyle="bold" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:orientation="vertical"
android:weightSum="2" >
<ImageView
android:id="@+id/imgvCheck"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_weight="1"
android:contentDescription="@string/app_name"
android:src="@drawable/selecterfav" />
<ImageView
android:id="@+id/txtItemName2"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_weight="1"
android:src="@drawable/check" />
</RelativeLayout>
</LinearLayout>
confirmationbox.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:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/redac"
android:minHeight="150dp"
android:minWidth="250dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@drawable/redac"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="2" >
<TextView
android:id="@+id/heading"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_weight="2"
android:gravity="center"
android:padding="5dp"
android:text="Confirmation"
android:textColor="#000"
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Are you sure?"
android:textColor="#000"
android:textSize="16dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:id="@+id/ok"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/newbuy"
android:drawablePadding="10dp"
android:padding="10dp"
android:singleLine="true"
android:text="YES"
android:textColor="#fff"
android:textSize="13dp"
android:textStyle="bold" />
<Button
android:id="@+id/close"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@drawable/newbuy"
android:drawablePadding="10dp"
android:padding="10dp"
android:text="NO"
android:textColor="#fff"
android:textSize="13dp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Java Files:-
ListActivityMain.java
package com.parthiv.listactivitymain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ListActivityMain extends Activity implements OnClickListener {
private ListView listview;
private ItemAdapter adapter;
private EditText editsearch;
private ArrayList<scheduleItemBean> arrlistItems = new ArrayList<scheduleItemBean>();
int selectionCount = 0;
private Button btnDone;
Typeface tf;
String fontPath = "fonts/Smoolthan Bold.otf";
ProgressDialog mProgressDialog;
String jsonResponse;
int totallength1 = 0;
LinearLayout wrongappro;
String dridd = "";
private DBHelper mHelper;
private SQLiteDatabase dataBase;
int ij = 0;
String remoid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.listviewmain);
tf = Typeface.createFromAsset(getAssets(), fontPath);
mHelper = new DBHelper(this);
this.deleteDatabase(mHelper.DATABASE_NAME);
initializeViews();
new insertlist().execute("");
}
// views=========================================
void initializeViews() {
wrongappro = (LinearLayout) findViewById(R.id.wrongappro);
listview = (ListView) findViewById(R.id.listview);
editsearch = (EditText) findViewById(R.id.edtSearch);
btnDone = (Button) findViewById(R.id.btnDone);
editsearch.setTypeface(tf);
btnDone.setTypeface(tf);
btnDone.setOnClickListener(this);
// Search contact like text enter in edit text.
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
String text = editsearch.getText().toString().toLowerCase();
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDone:
dridd = "";
mHelper = new DBHelper(this);
dridd = "";
dridd = "";
mHelper = new DBHelper(this);
int profile_counts = mHelper.getProfilesCount();
dridd = "";
if (profile_counts == 0) {
Toast.makeText(getApplicationContext(),
"Please select your Version to continue...", 1000)
.show();
} else {
dataBase = mHelper.getWritableDatabase();
Cursor mCursor = dataBase.rawQuery("SELECT * FROM "
+ DBHelper.TABLE_NAME, null);
if (mCursor.moveToFirst()) {
do {
dridd += ","
+ mCursor.getString(mCursor
.getColumnIndex(DBHelper.KEY_FNAME));
} while (mCursor.moveToNext());
}
final Dialog viewdialog1 = new Dialog(ListActivityMain.this);
viewdialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
viewdialog1.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
viewdialog1.setContentView(R.layout.confirmationbox);
viewdialog1.setCancelable(false);
viewdialog1.setCanceledOnTouchOutside(false);
TextView heading = (TextView) viewdialog1
.findViewById(R.id.heading);
heading.setTypeface(tf);
TextView title = (TextView) viewdialog1
.findViewById(R.id.title);
heading.setTypeface(tf);
heading.setText("CONFIRMATION");
title.setText("Want to continue with your selection?");
title.setTypeface(tf);
Button ok = (Button) viewdialog1.findViewById(R.id.ok);
ok.setTypeface(tf);
Button cancel = (Button) viewdialog1.findViewById(R.id.close);
cancel.setTypeface(tf);
cancel.setText("No");
ok.setText("Yes");
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
viewdialog1.dismiss();
}
});
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
viewdialog1.dismiss();
dridd = dridd.substring(1, dridd.length());
Toast.makeText(getApplicationContext(), "" + dridd,
1000).show();
}
});
viewdialog1.show();
}
break;
default:
break;
}
}
public class ItemAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater inflater;
public List<scheduleItemBean> arraylistData = null;
private ArrayList<scheduleItemBean> arraylist;
public ItemAdapter(Context context, List<scheduleItemBean> listbean) {
mContext = context;
this.arraylistData = listbean;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<scheduleItemBean>();
this.arraylist.addAll(listbean);
}
public class ViewHolder {
TextView txtItemName;
ImageView txtItemName2;
TextView txtItemName0;
ImageView imgvCheck;
}
@Override
public int getCount() {
return arraylistData.size();
}
@Override
public scheduleItemBean getItem(int position) {
return arraylistData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listviewmain_row, null);
holder.txtItemName = (TextView) view
.findViewById(R.id.txtItemName);
holder.txtItemName.setTypeface(tf);
holder.txtItemName2 = (ImageView) view
.findViewById(R.id.txtItemName2);
holder.txtItemName0 = (TextView) view
.findViewById(R.id.txtItemName0);
holder.txtItemName0.setTypeface(tf);
holder.imgvCheck = (ImageView) view
.findViewById(R.id.imgvCheck);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// Set data to view=================================================
try {
scheduleItemBean bean = arraylistData.get(position);
if (bean.isSelected)
holder.imgvCheck.setSelected(true);
else
holder.imgvCheck.setSelected(false);
holder.txtItemName.setText(bean.getItemName());
holder.txtItemName0.setText(bean.getItemName2());
if (bean.getItemName1().equals("0")) {
holder.txtItemName2.setVisibility(View.INVISIBLE);
holder.imgvCheck.setVisibility(View.VISIBLE);
} else {
holder.txtItemName2.setVisibility(View.VISIBLE);
holder.imgvCheck.setVisibility(View.INVISIBLE);
}
holder.txtItemName2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
scheduleItemBean beans = arraylistData.get(position);
remoid = "" + beans.getItemName2();
}
});
holder.imgvCheck.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mHelper = new DBHelper(ListActivityMain.this);
for (int i = 0; i < arraylistData.size(); i++) {
scheduleItemBean bean = arraylistData.get(position);
if (i == position) {
if (bean.isSelected()) {
bean.setSelected(false);
dataBase.delete(
DBHelper.TABLE_NAME,
DBHelper.KEY_FNAME + "="
+ bean.getItemName2(), null);
} else {
bean.setSelected(true);
dataBase = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DBHelper.KEY_FNAME,
"" + bean.getItemName2());
dataBase.insert(DBHelper.TABLE_NAME, null,
values);
}
}
notifyDataSetChanged();
}
}
});
holder.imgvCheck.setTag(bean);
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase();
arraylistData.clear();
if (charText.length() == 0) {
arraylistData.addAll(arraylist);
} else {
for (scheduleItemBean contact : arraylist) {
if (contact.getItemName().toLowerCase().contains(charText)) {
arraylistData.add(contact);
}
}
}
notifyDataSetChanged();
}
}
class insertlist extends AsyncTask<String, String, String> {
@SuppressWarnings("deprecation")
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(ListActivityMain.this);
mProgressDialog.setMessage("Please wait.....");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
protected String doInBackground(String... params) {
String urlJsonArry1;
urlJsonArry1 = "http://androidblog.esy.es/ImageJsonData.php";
try {
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry1,
new Response.Listener<JSONArray>() {
public void onResponse(JSONArray response) {
try {
jsonResponse = "";
totallength1 = response.length();
arrlistItems.clear();
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String listid = person.getString("id");
String listversion = ""
+ person.getString("image_title");
String dummy = "0";
scheduleItemBean bean = new scheduleItemBean();
bean.setItemName(listversion);
bean.setItemName1(dummy);
bean.setItemName2(listid);
arrlistItems.add(bean);
}
if (totallength1 == 0) {
Toast.makeText(
getApplicationContext(),
"No Android version has been found...",
1000).show();
mProgressDialog.dismiss();
finish();
} else {
ShowAllContent();
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(),
"Problem with internet...", 1000)
.show();
mProgressDialog.dismiss();
finish();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
"Problem with internet...", 1000)
.show();
mProgressDialog.dismiss();
finish();
}
});
AppController.getInstance().addToRequestQueue(req);
} catch (Exception e) {
System.out.println("Exception : " + e.getMessage());
}
return null;
}
private void ShowAllContent() {
mProgressDialog.dismiss();
adapter = new ItemAdapter(ListActivityMain.this, arrlistItems);
adapter.notifyDataSetChanged();
listview.setAdapter(adapter);
}
}
}
scheduleItemBean.java
package com.parthiv.listactivitymain;
public class scheduleItemBean {
public String ItemName;
public String ItemName1;
public String ItemName2;
public boolean isSelected;
public String getItemName() {
return ItemName;
}
public String getItemName1() {
return ItemName1;
}
public String getItemName2() {
return ItemName2;
}
public void setItemName(String displayName) {
this.ItemName = displayName;
}
public void setItemName1(String displayName1) {
this.ItemName1 = displayName1;
}
public void setItemName2(String displayName2) {
this.ItemName2 = displayName2;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
}
DBHelper.java
package com.parthiv.listactivitymain;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
static String DATABASE_NAME = "sendlocdat";
public static final String TABLE_NAME = "sendloctab";
public static final String KEY_FNAME = "fname";
public static final String KEY_ID = "id";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + KEY_ID
+ " INTEGER PRIMARY KEY, " + KEY_FNAME + " TEXT)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public int getProfilesCount() {
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int cnt = cursor.getCount();
cursor.close();
return cnt;
}
}
Screenshots:-
Layouts:-
listviewmain.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:background="#0f4c5c"
android:focusableInTouchMode="true"
android:orientation="vertical">
<LinearLayout
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginTop="20dp"
android:gravity="center_vertical"
android:orientation="horizontal" >
<EditText
android:id="@+id/edtSearch"
android:layout_width="0dp"
android:layout_height="40dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:textColorHint="#000"
android:background="@drawable/edittextshape"
android:drawablePadding="5dp"
android:focusableInTouchMode="true"
android:gravity="center_vertical"
android:paddingLeft="10dp"
android:hint="SEARCH"
android:textColor="#000"
android:inputType="text"
android:singleLine="true"
android:textSize="14dp"/>
</LinearLayout>
<ListView
android:id="@+id/listview"
android:layout_width="fill_parent"
android:layout_height="0dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:layout_marginTop="10dp"
android:layout_weight="1"
android:divider="@color/list_divider"
android:dividerHeight="0.5dp"
android:paddingTop="5dp" />
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical"
android:layout_gravity="right"
android:gravity="right">
<LinearLayout
android:id="@+id/wrongappro"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="3dp"
android:layout_marginRight="14dp"
android:gravity="center"
android:orientation="vertical" >
<Button
android:id="@+id/btnDone"
android:layout_width="40dp"
android:layout_height="40dp"
android:text=""
android:background="@drawable/roundicon"
android:textColor="#ff0000"
android:gravity="center"
android:textSize="16dp"
android:textStyle="bold"
android:layout_gravity="center" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
listviewmain_row.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:background="@null"
android:gravity="center_vertical" >
<LinearLayout
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:gravity="center_vertical"
android:orientation="vertical"
android:padding="10dp" >
<TextView
android:id="@+id/txtItemName0"
android:layout_width="1dp"
android:layout_height="1dp"
android:ellipsize="end"
android:text="No data"
android:textAllCaps="true"
android:textColor="#fff"
android:textSize="13dp"
android:visibility="invisible" />
<TextView
android:id="@+id/txtItemName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:ellipsize="end"
android:text="No data"
android:textAllCaps="true"
android:textColor="#fff"
android:textSize="15dp"
android:textStyle="bold" />
</LinearLayout>
<RelativeLayout
android:layout_width="wrap_content"
android:layout_height="match_parent"
android:layout_marginRight="2dp"
android:layout_marginTop="2dp"
android:orientation="vertical"
android:weightSum="2" >
<ImageView
android:id="@+id/imgvCheck"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_weight="1"
android:contentDescription="@string/app_name"
android:src="@drawable/selecterfav" />
<ImageView
android:id="@+id/txtItemName2"
android:layout_width="30dp"
android:layout_height="30dp"
android:layout_weight="1"
android:src="@drawable/check" />
</RelativeLayout>
</LinearLayout>
confirmationbox.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:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:background="@drawable/redac"
android:minHeight="150dp"
android:minWidth="250dp"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_gravity="center"
android:background="@drawable/redac"
android:gravity="center"
android:orientation="horizontal"
android:weightSum="2" >
<TextView
android:id="@+id/heading"
android:layout_width="wrap_content"
android:layout_height="40dp"
android:layout_gravity="center"
android:layout_weight="2"
android:gravity="center"
android:padding="5dp"
android:text="Confirmation"
android:textColor="#000"
android:textSize="18dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical" >
<LinearLayout
android:layout_width="match_parent"
android:layout_height="1dp"
android:background="#000"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="10dp"
android:orientation="vertical" >
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginLeft="10dp"
android:layout_marginRight="10dp"
android:layout_marginTop="10dp"
android:gravity="center"
android:orientation="vertical" >
<TextView
android:id="@+id/title"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Are you sure?"
android:textColor="#000"
android:textSize="16dp" />
</LinearLayout>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginTop="10dp"
android:orientation="horizontal"
android:weightSum="2" >
<Button
android:id="@+id/ok"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="10dp"
android:layout_marginRight="5dp"
android:layout_weight="1"
android:background="@drawable/newbuy"
android:drawablePadding="10dp"
android:padding="10dp"
android:singleLine="true"
android:text="YES"
android:textColor="#fff"
android:textSize="13dp"
android:textStyle="bold" />
<Button
android:id="@+id/close"
style="?android:attr/buttonStyleSmall"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="10dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="10dp"
android:layout_weight="1"
android:background="@drawable/newbuy"
android:drawablePadding="10dp"
android:padding="10dp"
android:text="NO"
android:textColor="#fff"
android:textSize="13dp"
android:textStyle="bold" />
</LinearLayout>
</LinearLayout>
</LinearLayout>
Java Files:-
ListActivityMain.java
package com.parthiv.listactivitymain;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import com.android.volley.Request;
import com.android.volley.Response;
import com.android.volley.VolleyError;
import com.android.volley.toolbox.JsonArrayRequest;
import com.android.volley.toolbox.StringRequest;
import android.annotation.TargetApi;
import android.app.Activity;
import android.app.Dialog;
import android.app.ProgressDialog;
import android.content.ContentValues;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.graphics.Color;
import android.graphics.Typeface;
import android.graphics.drawable.ColorDrawable;
import android.os.AsyncTask;
import android.os.Build;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
public class ListActivityMain extends Activity implements OnClickListener {
private ListView listview;
private ItemAdapter adapter;
private EditText editsearch;
private ArrayList<scheduleItemBean> arrlistItems = new ArrayList<scheduleItemBean>();
int selectionCount = 0;
private Button btnDone;
Typeface tf;
String fontPath = "fonts/Smoolthan Bold.otf";
ProgressDialog mProgressDialog;
String jsonResponse;
int totallength1 = 0;
LinearLayout wrongappro;
String dridd = "";
private DBHelper mHelper;
private SQLiteDatabase dataBase;
int ij = 0;
String remoid;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.listviewmain);
tf = Typeface.createFromAsset(getAssets(), fontPath);
mHelper = new DBHelper(this);
this.deleteDatabase(mHelper.DATABASE_NAME);
initializeViews();
new insertlist().execute("");
}
// views=========================================
void initializeViews() {
wrongappro = (LinearLayout) findViewById(R.id.wrongappro);
listview = (ListView) findViewById(R.id.listview);
editsearch = (EditText) findViewById(R.id.edtSearch);
btnDone = (Button) findViewById(R.id.btnDone);
editsearch.setTypeface(tf);
btnDone.setTypeface(tf);
btnDone.setOnClickListener(this);
// Search contact like text enter in edit text.
editsearch.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
String text = editsearch.getText().toString().toLowerCase();
adapter.filter(text);
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
}
});
}
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.btnDone:
dridd = "";
mHelper = new DBHelper(this);
dridd = "";
dridd = "";
mHelper = new DBHelper(this);
int profile_counts = mHelper.getProfilesCount();
dridd = "";
if (profile_counts == 0) {
Toast.makeText(getApplicationContext(),
"Please select your Version to continue...", 1000)
.show();
} else {
dataBase = mHelper.getWritableDatabase();
Cursor mCursor = dataBase.rawQuery("SELECT * FROM "
+ DBHelper.TABLE_NAME, null);
if (mCursor.moveToFirst()) {
do {
dridd += ","
+ mCursor.getString(mCursor
.getColumnIndex(DBHelper.KEY_FNAME));
} while (mCursor.moveToNext());
}
final Dialog viewdialog1 = new Dialog(ListActivityMain.this);
viewdialog1.requestWindowFeature(Window.FEATURE_NO_TITLE);
viewdialog1.getWindow().setBackgroundDrawable(
new ColorDrawable(android.graphics.Color.TRANSPARENT));
viewdialog1.setContentView(R.layout.confirmationbox);
viewdialog1.setCancelable(false);
viewdialog1.setCanceledOnTouchOutside(false);
TextView heading = (TextView) viewdialog1
.findViewById(R.id.heading);
heading.setTypeface(tf);
TextView title = (TextView) viewdialog1
.findViewById(R.id.title);
heading.setTypeface(tf);
heading.setText("CONFIRMATION");
title.setText("Want to continue with your selection?");
title.setTypeface(tf);
Button ok = (Button) viewdialog1.findViewById(R.id.ok);
ok.setTypeface(tf);
Button cancel = (Button) viewdialog1.findViewById(R.id.close);
cancel.setTypeface(tf);
cancel.setText("No");
ok.setText("Yes");
cancel.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
viewdialog1.dismiss();
}
});
ok.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
viewdialog1.dismiss();
dridd = dridd.substring(1, dridd.length());
Toast.makeText(getApplicationContext(), "" + dridd,
1000).show();
}
});
viewdialog1.show();
}
break;
default:
break;
}
}
public class ItemAdapter extends BaseAdapter {
private Context mContext;
private LayoutInflater inflater;
public List<scheduleItemBean> arraylistData = null;
private ArrayList<scheduleItemBean> arraylist;
public ItemAdapter(Context context, List<scheduleItemBean> listbean) {
mContext = context;
this.arraylistData = listbean;
inflater = LayoutInflater.from(mContext);
this.arraylist = new ArrayList<scheduleItemBean>();
this.arraylist.addAll(listbean);
}
public class ViewHolder {
TextView txtItemName;
ImageView txtItemName2;
TextView txtItemName0;
ImageView imgvCheck;
}
@Override
public int getCount() {
return arraylistData.size();
}
@Override
public scheduleItemBean getItem(int position) {
return arraylistData.get(position);
}
@Override
public long getItemId(int position) {
return position;
}
@TargetApi(Build.VERSION_CODES.JELLY_BEAN)
public View getView(final int position, View view, ViewGroup parent) {
final ViewHolder holder;
if (view == null) {
holder = new ViewHolder();
view = inflater.inflate(R.layout.listviewmain_row, null);
holder.txtItemName = (TextView) view
.findViewById(R.id.txtItemName);
holder.txtItemName.setTypeface(tf);
holder.txtItemName2 = (ImageView) view
.findViewById(R.id.txtItemName2);
holder.txtItemName0 = (TextView) view
.findViewById(R.id.txtItemName0);
holder.txtItemName0.setTypeface(tf);
holder.imgvCheck = (ImageView) view
.findViewById(R.id.imgvCheck);
view.setTag(holder);
} else {
holder = (ViewHolder) view.getTag();
}
// Set data to view=================================================
try {
scheduleItemBean bean = arraylistData.get(position);
if (bean.isSelected)
holder.imgvCheck.setSelected(true);
else
holder.imgvCheck.setSelected(false);
holder.txtItemName.setText(bean.getItemName());
holder.txtItemName0.setText(bean.getItemName2());
if (bean.getItemName1().equals("0")) {
holder.txtItemName2.setVisibility(View.INVISIBLE);
holder.imgvCheck.setVisibility(View.VISIBLE);
} else {
holder.txtItemName2.setVisibility(View.VISIBLE);
holder.imgvCheck.setVisibility(View.INVISIBLE);
}
holder.txtItemName2.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
scheduleItemBean beans = arraylistData.get(position);
remoid = "" + beans.getItemName2();
}
});
holder.imgvCheck.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
// TODO Auto-generated method stub
mHelper = new DBHelper(ListActivityMain.this);
for (int i = 0; i < arraylistData.size(); i++) {
scheduleItemBean bean = arraylistData.get(position);
if (i == position) {
if (bean.isSelected()) {
bean.setSelected(false);
dataBase.delete(
DBHelper.TABLE_NAME,
DBHelper.KEY_FNAME + "="
+ bean.getItemName2(), null);
} else {
bean.setSelected(true);
dataBase = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(DBHelper.KEY_FNAME,
"" + bean.getItemName2());
dataBase.insert(DBHelper.TABLE_NAME, null,
values);
}
}
notifyDataSetChanged();
}
}
});
holder.imgvCheck.setTag(bean);
} catch (Exception e) {
e.printStackTrace();
}
return view;
}
// Filter Class
public void filter(String charText) {
charText = charText.toLowerCase();
arraylistData.clear();
if (charText.length() == 0) {
arraylistData.addAll(arraylist);
} else {
for (scheduleItemBean contact : arraylist) {
if (contact.getItemName().toLowerCase().contains(charText)) {
arraylistData.add(contact);
}
}
}
notifyDataSetChanged();
}
}
class insertlist extends AsyncTask<String, String, String> {
@SuppressWarnings("deprecation")
protected void onPreExecute() {
super.onPreExecute();
mProgressDialog = new ProgressDialog(ListActivityMain.this);
mProgressDialog.setMessage("Please wait.....");
mProgressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
mProgressDialog.setCancelable(false);
mProgressDialog.show();
}
protected String doInBackground(String... params) {
String urlJsonArry1;
urlJsonArry1 = "http://androidblog.esy.es/ImageJsonData.php";
try {
JsonArrayRequest req = new JsonArrayRequest(urlJsonArry1,
new Response.Listener<JSONArray>() {
public void onResponse(JSONArray response) {
try {
jsonResponse = "";
totallength1 = response.length();
arrlistItems.clear();
for (int i = 0; i < response.length(); i++) {
JSONObject person = (JSONObject) response
.get(i);
String listid = person.getString("id");
String listversion = ""
+ person.getString("image_title");
String dummy = "0";
scheduleItemBean bean = new scheduleItemBean();
bean.setItemName(listversion);
bean.setItemName1(dummy);
bean.setItemName2(listid);
arrlistItems.add(bean);
}
if (totallength1 == 0) {
Toast.makeText(
getApplicationContext(),
"No Android version has been found...",
1000).show();
mProgressDialog.dismiss();
finish();
} else {
ShowAllContent();
}
} catch (JSONException e) {
Toast.makeText(getApplicationContext(),
"Problem with internet...", 1000)
.show();
mProgressDialog.dismiss();
finish();
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Toast.makeText(getApplicationContext(),
"Problem with internet...", 1000)
.show();
mProgressDialog.dismiss();
finish();
}
});
AppController.getInstance().addToRequestQueue(req);
} catch (Exception e) {
System.out.println("Exception : " + e.getMessage());
}
return null;
}
private void ShowAllContent() {
mProgressDialog.dismiss();
adapter = new ItemAdapter(ListActivityMain.this, arrlistItems);
adapter.notifyDataSetChanged();
listview.setAdapter(adapter);
}
}
}
scheduleItemBean.java
package com.parthiv.listactivitymain;
public class scheduleItemBean {
public String ItemName;
public String ItemName1;
public String ItemName2;
public boolean isSelected;
public String getItemName() {
return ItemName;
}
public String getItemName1() {
return ItemName1;
}
public String getItemName2() {
return ItemName2;
}
public void setItemName(String displayName) {
this.ItemName = displayName;
}
public void setItemName1(String displayName1) {
this.ItemName1 = displayName1;
}
public void setItemName2(String displayName2) {
this.ItemName2 = displayName2;
}
public boolean isSelected() {
return isSelected;
}
public void setSelected(boolean isSelected) {
this.isSelected = isSelected;
}
}
DBHelper.java
package com.parthiv.listactivitymain;
import android.content.Context;
import android.database.Cursor;
import android.database.sqlite.SQLiteDatabase;
import android.database.sqlite.SQLiteOpenHelper;
public class DBHelper extends SQLiteOpenHelper {
static String DATABASE_NAME = "sendlocdat";
public static final String TABLE_NAME = "sendloctab";
public static final String KEY_FNAME = "fname";
public static final String KEY_ID = "id";
public DBHelper(Context context) {
super(context, DATABASE_NAME, null, 1);
}
@Override
public void onCreate(SQLiteDatabase db) {
String CREATE_TABLE = "CREATE TABLE " + TABLE_NAME + " (" + KEY_ID
+ " INTEGER PRIMARY KEY, " + KEY_FNAME + " TEXT)";
db.execSQL(CREATE_TABLE);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
db.execSQL("DROP TABLE IF EXISTS " + TABLE_NAME);
onCreate(db);
}
public int getProfilesCount() {
String countQuery = "SELECT * FROM " + TABLE_NAME;
SQLiteDatabase db = this.getReadableDatabase();
Cursor cursor = db.rawQuery(countQuery, null);
int cnt = cursor.getCount();
cursor.close();
return cnt;
}
}
Screenshots:-
No comments:
Post a Comment