【问题标题】:Search and Filter Android ListView搜索和过滤 Android ListView
【发布时间】:2016-12-10 09:35:44
【问题描述】:

我在使用搜索栏过滤 Android ListView 时遇到问题。 在我扩展我的代码并添加一个 CustomList 类之前它工作得很好。 CustomList 类用于填充包含图像和子文本的 ListView。我的 CustomList 类扩展了 ArrayAdapter。

这是两个类的相关代码

public class CustomList extends ArrayAdapter<String> {

private final Activity context;
private final String[] languages;

public CustomList(Activity context, String[] languages) {
    super(context, R.layout.list_single, languages);
    this.context = context;
    this.languages = languages;
}
}

和 MainActivity:

public class MainActivity extends Activity {

CustomList adapter;
ListView list;
EditText searchBar;

String[] languages = { "ActionScript", "Ajax", "Python", "Java", "JavaScript", "C++", "C#", "C", "NASM", "Assembly",
        "PHP", "R", "Scala", "TeX", "Visual Basic", "Fortran", "COBOL", "Lisp", "Lua", "Ruby", "XML", };

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    Arrays.sort(languages);

    searchBar = (EditText) findViewById(R.id.searchBarTI);

    adapter = new CustomList(MainActivity.this, languages);
    list = (ListView) findViewById(R.id.listVw);
    list.setTextFilterEnabled(true);

    list.setAdapter(adapter);

    searchBar.addTextChangedListener(new TextWatcher() {

        @Override
        public void onTextChanged(CharSequence cs, int arg1, int arg2, int arg3) {
            MainActivity.this.adapter.getFilter().filter(cs);
        }
    });
}
}

当我在搜索栏中输入文本时,只剩下 listView 中的第一个元素。其余的被过滤掉:

Image of the bug

我不确定我遗漏了什么或没有看到什么。请有人帮忙。

【问题讨论】:

    标签: android listview


    【解决方案1】:

    如果您正在自定义 ArrayAdapter,那么您应该实现一个可过滤的接口来在适配器中搜索数据。

    查看以下链接: Custom getFilter in custom ArrayAdapter in android

    【讨论】:

    猜你喜欢
    • 2013-02-10
    • 1970-01-01
    • 2018-09-24
    • 2011-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-30
    • 1970-01-01
    相关资源
    最近更新 更多