Listview with searchbar

Introduction 

Basically string values stored/updated into array/base adapter for using set  into listview.but this project is different because while search some name means its index values are changing during its position values so need to set some more adapter for storing filter values for other purpose(move index values into another activity,toast purpose etc...)

demo






Using the code

activity_main.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
android:id="@+id/LinearLayout01"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical">
<EditText 
    android:id="@+id/EditText01"
android:layout_height="wrap_content"
android:layout_width="fill_parent"
android:hint="search"/>

<ListView 
    android:id="@+id/android:list"
android:cacheColorHint="#00000000"
android:layout_width="fill_parent"
android:layout_height="wrap_content"/>
</LinearLayout>   


list_items.xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="horizontal"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:padding="8dp">

<TextView
android:id="@+id/title"
android:textColor="#000"
    android:layout_width="0dp"
    android:layout_weight="1"
    android:layout_margin="10dp"
    android:layout_height="wrap_content"/>

</LinearLayout>


MainActivity.java:
package com.example.listviewsearch;

import java.util.ArrayList;
import java.util.Arrays;
import android.os.Bundle;
import android.app.Activity;
import android.app.ListActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.EditText;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import android.widget.AdapterView.OnItemClickListener;

public class MainActivity extends ListActivity {

private EditText et;
private ListView lv;
private String[] listview_names = {"Kalidoss","Hariharan","Sampath","Sheik",
   "Manikandan","Niyas","Murugamani",
   "Vicky"};
private ArrayList<String> array_sort;
int textlength=0;

public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et  (EditText) findViewById(R.id.EditText01);
lv = (ListView) findViewById(android.R.id.list);
array_sort=new ArrayList<String> (Arrays.asList(listview_names));
setListAdapter(new bsAdapter(this));


et.addTextChangedListener(new TextWatcher()
{
public void afterTextChanged(Editable s)
{
                  // Abstract Method of TextWatcher Interface.
}
public void beforeTextChanged(CharSequence s,
int start, int count, int after)
{
// Abstract Method of TextWatcher Interface.
}
public void onTextChanged(CharSequence s,
int start, int before, int count)
{
textlength = et.getText().length();
array_sort.clear();
for (int i = 0; i < listview_names.length; i++)
{
if (textlength <= listview_names[i].length())
{
/***
 * If you want to highlight the countries which start with 
 * entered letters then choose this block. 
 * And comment the below If condition Block
 */
if(listview_names[i].toLowerCase().contains(
et.getText().toString().toLowerCase().trim()))
{
array_sort.add(listview_names[i]);
}
                      }
}
AppendList(array_sort);
}
});
lv.setOnItemClickListener(new OnItemClickListener() {

public void onItemClick(AdapterView<?> arg0,
                    View arg1, int position, long arg3)
{
   Toast.makeText(getApplicationContext(), array_sort.get(position),
   Toast.LENGTH_SHORT).show();
}
});
}
public void AppendList(ArrayList<String> str)
{
setListAdapter(new bsAdapter(this));
}
public class bsAdapter extends BaseAdapter
    {
        Activity cntx;
        public bsAdapter(Activity context)
        {
            // TODO Auto-generated constructor stub
            this.cntx=context;
        }

        public int getCount()
        {
            // TODO Auto-generated method stub
            return array_sort.size();
        }

        public Object getItem(int position)
        {
            // TODO Auto-generated method stub
            return array_sort.get(position);
        }

        public long getItemId(int position)
        {
            // TODO Auto-generated method stub
            return array_sort.size();
        }

        public View getView(final int position, View convertView, ViewGroup parent)
        {
            View row=null;
            
            LayoutInflater inflater=cntx.getLayoutInflater();
            row=inflater.inflate(R.layout.list_items, null);
            
            TextView   tv = (TextView) row.findViewById(R.id.title);
            
            tv.setText(array_sort.get(position));
            
        return row;
        }
    }


Previous
Next Post »

1 comments:

Write comments
Anonymous
AUTHOR
May 18, 2019 at 8:37 AM delete

I used to be suggested this web site by my cousin. I'm no longer certain whether this put up is written by him as nobody else realize such
distinct approximately my difficulty. You're incredible! Thanks!

Reply
avatar