【发布时间】:2016-06-25 20:58:01
【问题描述】:
我有一个包含大约 100 多个项目的列表,我正在构建一个多选列表,用户可以从中选择他需要的任意数量的项目。 我创建了带有多项选择的列表视图,但滚动 100 个项目对用户来说太复杂了。
有没有办法将搜索框放在列表视图的顶部,以便在搜索框中输入文本时,用户只会看到相关的项目,并且可以从中进行多项选择?
【问题讨论】:
我有一个包含大约 100 多个项目的列表,我正在构建一个多选列表,用户可以从中选择他需要的任意数量的项目。 我创建了带有多项选择的列表视图,但滚动 100 个项目对用户来说太复杂了。
有没有办法将搜索框放在列表视图的顶部,以便在搜索框中输入文本时,用户只会看到相关的项目,并且可以从中进行多项选择?
【问题讨论】:
有没有办法将搜索框放在列表视图的顶部,所以 在搜索框中输入文本后,用户将只看到相关项目 并且可以从中做出多项选择吗?
是的,您可能必须实现 Text-watcher 类。
在搜索编辑文本中,您必须设置 addTextChange Event 并在其中传递 text-watcher 对象。
现在在TextWatcher 类的OnTextChanged() 中,您必须从数据源中获取相关数据并通过adapter.NotifyDatasetChanged() 刷新适配器。
编辑
现在对于Multiple selection List-view,您可以创建一个list-row layout,其中包含一个Checkbox。在你的类中创建一个Adapter的类。你可以创建一个Base-Adapter,它的getView()方法膨胀list-row并设置check-box上的文本并设置checkbox的checked属性根据您的选择
【讨论】:
是的, 您可以使用 AutoCompleteTextView 或在 listview 顶部实现 EditText 的 onTextChangeListener。您可以将 listview 的项目添加到适配器到 AutoCompleteTextView 中。
希望你明白我所说的......
【讨论】:
这是我尝试过的一些代码..它可能会有所帮助
public void afterTextChanged(Editable s) {
// TODO Auto-generated method stub
len=actv.getText().length();
for(int i=0;i<content.size();i++)
{
if(len<=content.get(i).length())
{
if(actv.getText().toString().trim().equalsIgnoreCase((String) content.get(i).subSequence(0, len)))
{
arr_sort.add(content.get(i));
}
}
}
adapter=new ArrayAdapter<String>(MyListDemoActivity.this,android.R.layout.simple_list_item_1,arr_sort);
setListAdapter(adapter);
}
});
【讨论】: