我正在使用一个自定义列表视图从json解析中获取数据, 现在我有一个edittext,用于搜索listview中列出的项目,如何实现搜索功能。任何帮助将不胜感激。
ListView_res_name_main_cetegires = (ListView) findViewById(R.id.list_costome_list_main_cetegories);
Custome_res_main_cetegories customAdapter_res_name_main_cetegiores;
if(language.equalsIgnoreCase("English"))
{
customAdapter_res_name_main_cetegiores = new Custome_res_main_cetegories(getApplicationContext(), array_str_name_eng,language);
}else
{
customAdapter_res_name_main_cetegiores = new Custome_res_main_cetegories(getApplicationContext(), array_str_name_arab,language);
}
ListView_res_name_main_cetegires.setAdapter(customAdapter_res_name_main_cetegiores );
答案 0 :(得分:0)
如果您使用EditText进行搜索,那么您必须编写自己的过滤方法。这里有一个示例Custom ListView Search。如果你不能得到它,请告诉我,我会帮助你。
答案 1 :(得分:0)
您不应该过滤ListView,而应该过滤器,
Adapter adapter = new CustomAdapter();
ListView_res_name_main_cetegires.setAdapter(adapter);
加载数据:
adapter.setData(your data);
搜索:
adapter.filter(searchQuery)
在setData中,过滤方法不要忘记调用notifyDataSetChanged()
答案 2 :(得分:0)
以下是在列表视图中实现搜索功能的示例。首先添加一个编辑文本,您将在列表视图中输入要搜索的文本。以下是其余代码:
**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">
</EditText>
<ListView android:id="@+id/ListView01"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
</ListView>
</LinearLayout>
活动代码:
import java.util.ArrayList;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextWatcher;
import android.widget.ArrayAdapter;
import android.widget.EditText;
import android.widget.ListView;
public class ListViewSearchExample extends Activity
{
private ListView lv;
private EditText et;
private String listview_array[] = { "ONE", "TWO", "THREE", "FOUR", "FIVE",
"SIX", "SEVEN", "EIGHT", "NINE", "TEN" };
private ArrayList<String> array_sort= new ArrayList<String>();
int textlength=0;
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
lv = (ListView) findViewById(R.id.ListView01);
et = (EditText) findViewById(R.id.EditText01);
lv.setAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, listview_array));
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_array.length; i++)
{
if (textlength <= listview_array[i].length())
{
if(et.getText().toString().equalsIgnoreCase(
(String)
listview_array[i].subSequence(0,
textlength)))
{
array_sort.add(listview_array[i]);
}
}
}
lv.setAdapter(new ArrayAdapter<String>
(ListViewSearchExample.this,
android.R.layout.simple_list_item_1, array_sort));
}
});
}
希望这个有所帮助。