我有一个ListView
和一个EditText
.如何在键入时过滤ListView数据EditText
?
Android是否可以为ListView设置搜索栏,以便在触摸搜索栏时弹出键盘,当在搜索栏中输入文本时,会显示ListView中匹配的项目?
我真正需要的是带有键盘的搜索栏.
更新:
我添加了EditText字段,它会调出一个键盘,我可以输入EditText字段.我想要的是让ListView中显示的列表中项目的前几个字符与EditText窗口中输入的字符相匹配.
我试过按照ListView Filter中列出的方法尝试,但是我对ListView中已经完成了多少过滤有点困惑?
1)我是否需要创建一个单独的数组来存储与EditText中键入的文本相匹配的值?从这篇文章调用adapter.notifyDataSetChanged,看来ListView已经有一个shadow数组来执行此操作,并在adapter.notifyDataSetChanged(); 叫做.
2)我是否需要调用adapter.notifyDataSetChanged(); 在EditText窗口中键入一些文本后更新ListView?
3)我是否需要扩展ListActivity,如此帖所示?如果是这样,如果活动类已经从主活动扩展,我该如何扩展我的活动类?
4)我目前拥有以下内容:
ArrayAdapter<String> adapter = null;
private EditText filterText = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.symptom);
ListView symptomList = (ListView) findViewById(R.id.ListView_Symptom);
symptomList.setTextFilterEnabled(true);
symptomList.setFastScrollEnabled(true);
filterText = (EditText) findViewById(R.id.search_box);
filterText.addTextChangedListener(filterTextWatcher);
adapter = new ArrayAdapter<String>(this, R.layout.menu_item, symptomsArray);
symptomList.setAdapter(adapter);
private TextWatcher filterTextWatcher = new TextWatcher() {
public void afterTextChanged(Editable s) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public …
Run Code Online (Sandbox Code Playgroud) 我有一个由SimpleCursorAdapter支持的ListView.
我希望能够像输入联系人一样过滤列表,只需输入,我就遇到了textFilterEnabled()
问题是,我无法看到如何使用SimpleCursorAdapter.
这甚至可能吗?
如果是这样,它是如何完成的?
我有一个ListView,可以使用硬件键盘过滤掉项目.但是,对于没有硬件键盘而只有虚拟键盘的手机,我该怎么办?有没有办法添加按钮,按下时,虚拟键盘出现?
Android问题中讨论了这个问题:过滤listview时检查了错误的项目.总结该问题,当使用带有CursorAdapter和过滤器的列表视图时,在过滤后的列表中选择的项目将在删除过滤器后丢失其选择,而是选择未过滤列表中该位置的项目.
使用上面链接问题中的代码示例,我们应该在哪里放置代码来标记复选框.我相信它应该在CustomCursorAdapter的getView()方法中,但我不确定.另外,我们如何访问包含自定义适配器类中所有selectedIds的HashSet,因为它将在保存列表的主活动中初始化和修改.
我实现ListView的活动
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.selectfriends);
Log.v(TAG, "onCreate called") ;
selectedIds = new ArrayList<String>() ;
selectedLines = new ArrayList<Integer>() ;
mDbHelper = new FriendsDbAdapter(this);
mDbHelper.open() ;
Log.v(TAG, "database opened") ;
Cursor c = mDbHelper.fetchAllFriends();
startManagingCursor(c);
Log.v(TAG, "fetchAllFriends Over") ;
String[] from = new String[] {mDbHelper.KEY_NAME};
int[] to = new int[] { R.id.text1 };
final ListView listView = getListView();
Log.d(TAG, "Got listView");
// Now initialize the adapter and set it to display using …
Run Code Online (Sandbox Code Playgroud) 我有一个ListView
.它的每一行包含3 TextView
和2 Button
.在它上面我有一个EditText
.如何按每行ListView
第一TextView
行的值过滤我的?
我有一个ListView,其中包含一个由SimpleCursorAdapter支持的自定义项布局.我希望用户能够在EditText框中键入文本,并让ListView在键入时自动过滤.看起来这是与ArrayAdapter很简单的事,如所描述这里.
不幸的是,我没有运气使用SimpleCursorAdapter.我已尝试添加此处所述的额外方法,但该示例适用于AutoCompleteTextView而不是ListView.我无法为ListView工作.
有人可以为我提供一个使用EditText框过滤SimpleCursorAdapter支持的ListView的示例吗?
public class DirectoryListActivity extends DirectoryActivity {
private static SimpleCursorAdapter adapter;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.directory_list);
fillPeopleListView();
EditText etext=(EditText)findViewById(R.id.search_box);
etext.addTextChangedListener(new TextWatcher() {
public void onTextChanged(CharSequence s, int start, int before, int count) {
}
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
public void afterTextChanged(Editable s) {
adapter.getFilter().filter(s.toString());
}
});
}
private void fillPeopleListView() {
// Populate the ListView
SQLiteQueryBuilder queryBuilder = new SQLiteQueryBuilder();
queryBuilder.setTables(
directoryPeople.PEOPLE_TABLE
); …
Run Code Online (Sandbox Code Playgroud) 有没有办法在我的自定义列表视图上创建一个使用BaseAdapter而不是ArrayAdapter创建的搜索过滤器,因为我只遇到了在自定义列表视图中使用ArrayAdapters的方法.Follwing是我遇到的使用Array Adapter制作过滤器
我想ListView
在Android中使用过滤器.我找到了这个链接但我这样做我无法获得过滤效果.谁能告诉我有什么问题?我的代码是
public class testListViewFilter extends ListActivity {
/** Called when the activity is first created. */
private EditText filterText = null;
ArrayAdapter<String> adapter = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
filterText = (EditText) findViewById(R.id.search_box);
filterText.addTextChangedListener(filterTextWatcher);
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1,
mStrings));
adapter = new ArrayAdapter<String> (this,
android.R.layout.simple_spinner_item, mStrings);
}private TextWatcher filterTextWatcher = new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count,
int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, …
Run Code Online (Sandbox Code Playgroud) 我有一个子类,CursorAdapter
我想过滤我的listview.我知道这可以通过这里ArrayAdapter
所说的完成,并且使用自定义的方式对我来说不起作用.我想用一个习惯来做这件事.我应该覆盖什么,我可以举个例子吗?CursorAdapter
CursorAdapter
我有一个带有搜索栏的列表视图,我想在编辑文本中键入文本时对项目进行排序.我一直试图这样做,但是无法完成,你能帮我做吗?我要感谢你提前感谢