android - 如何通过EditText过滤ListView

标签 android listview filter android-edittext

我正在为 Android 制作类似电子书的应用程序,我想过滤书名,但每次您在编辑文本中输入单词或句子时,它都会搜索书籍的内容。

谁能帮我解决这个...

最佳答案

试试这个,每当你在编辑文本中输入文本时,列表将显示过滤后的结果,因为我已经在图像中显示了这些东西

初始:

Initial

过滤:

Filtered:
这是main.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:orientation="vertical" >

<EditText 
    android:id="@+id/etSearchbox"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    />
<ListView 
    android:id="@+id/lvFirst"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"

    ></ListView>    

</LinearLayout>

这是 FilterListActivity.java

package com.filterlist;

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 FilterListActivity extends Activity{

EditText etSearchbox;
ListView lvFirst;
ArrayAdapter<String> adapter1;
String[] data = {"mehul joisar","amit mishra","amitabh","Aamir khan","jesica","katrina"};

/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

etSearchbox=(EditText)findViewById(R.id.etSearchbox);
lvFirst=(ListView)findViewById(R.id.lvFirst);
lvFirst.setTextFilterEnabled(true);

adapter1 = new ArrayAdapter<String>(FilterListActivity.this, android.R.layout.simple_list_item_1, data);   
lvFirst.setAdapter(adapter1);

etSearchbox.addTextChangedListener(new TextWatcher() {

    @Override
    public void onTextChanged(CharSequence arg0, int arg1, int arg2, int arg3) {
        // TODO Auto-generated method stub
        FilterListActivity.this.adapter1.getFilter().filter(arg0);
    }

    @Override
    public void beforeTextChanged(CharSequence arg0, int arg1, int arg2,
            int arg3) {
        // TODO Auto-generated method stub

    }

    @Override
    public void afterTextChanged(Editable arg0) {
        // TODO Auto-generated method stub

    }
});




}
}

关于android - 如何通过EditText过滤ListView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10355971/

相关文章:

java - 有没有更好的方法来为许多分机做文件过滤?

android - 上传一个带有进度条的改造文件

http - IIS - 当 url 中有欧洲字符时,请求被 HTTP 过滤器拒绝

android - 我要实现什么代码才能在我的游戏中设置时间限制

c# - (MVVM/WPF) 在 View 模型中操作 View 元素

从另一个 Activity 返回时,android setOnItemClickListener 不响应

c# - 如何从 ListView 中访问页面的数据上下文?

javascript - DC.js 图表中的初始范围选择

android - picasso 是否优化位图和网络请求?

Android MediaRecorder 采样率和噪声