Skip to content Skip to sidebar Skip to footer

Use Filter To Do A Listview Search

I'm trying to use filter to do a listview search, but I get the error 'FilterResults cannot be resolved to a type', and if I add 'import android.widget.Filter; import android.widg

Solution 1:

I did it manually without using filter in a very easy way without using any extra click, just type in edit text and results are in the list view. List view elements changes according to the characters typed/removed in the edit text:

MainActivity.java

package com.example.examplesearch;

import java.util.ArrayList;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;

publicclassMainActivityextendsActionBarActivity {
    ArrayAdapter<String> adapter1 = null;

    @OverrideprotectedvoidonCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        finalListViewlist1= (ListView) findViewById(R.id.list1);
        finalEditTextsearch= (EditText) findViewById(R.id.search);
        final ArrayList<String> arraylist = newArrayList<String>();
        arraylist.add("Balvier");
        arraylist.add("Sudhier");
        arraylist.add("Abhinay");
        arraylist.add("Amit");
        arraylist.add("Dilip");
        final ArrayList<String> newArraylist = newArrayList<String>();
        final ArrayAdapter<String> adapter = newArrayAdapter<String>(
                getApplicationContext(),
                android.R.layout.simple_dropdown_item_1line, arraylist);

        newArraylist.clear();

        list1.setAdapter(adapter);
        search.addTextChangedListener(newTextWatcher() {

            @OverridepublicvoidonTextChanged(CharSequence s, int start, int before,
                    int count) {
                // TODO Auto-generated method stub
                newArraylist.clear();
                for (inti=0; i < arraylist.size(); i++) {
                    if (search.getText().length() <= arraylist.get(i).length()) {
                        if (search
                                .getText()
                                .toString()
                                .equalsIgnoreCase(
                                        (String) arraylist.get(i).subSequence(
                                                0, search.getText().length()))) {
                            newArraylist.add(arraylist.get(i).toString());
                        }
                    }
                }
                adapter1 = newArrayAdapter<String>(getApplicationContext(),
                        android.R.layout.simple_dropdown_item_1line,
                        newArraylist);
                list1.setAdapter(adapter1);
            }

            @OverridepublicvoidafterTextChanged(Editable s) {
                // TODO Auto-generated method stub

            }

            @OverridepublicvoidbeforeTextChanged(CharSequence s, int start, int count,
                    int after) {
                // TODO Auto-generated method stub

            }

        });

    }
}

activity_main.xml

<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:paddingBottom="@dimen/activity_vertical_margin"android:paddingLeft="@dimen/activity_horizontal_margin"android:paddingRight="@dimen/activity_horizontal_margin"android:paddingTop="@dimen/activity_vertical_margin"tools:context="com.example.examplesearch.MainActivity" ><EditTextandroid:id="@+id/search"android:layout_width="match_parent"android:layout_height="50dp" /><ListViewandroid:id="@+id/list1"android:layout_width="match_parent"android:layout_height="match_parent"android:background="#000000"android:layout_below="@+id/search"/></RelativeLayout>

Post a Comment for "Use Filter To Do A Listview Search"