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"