我正在使用ListView,其中每个项目都有相应的复选框。我设置了一个editText作为addTextChangedListener
的搜索栏。使用搜索栏时,显示的项目将缩减为适合搜索的项目,如预期的那样。
但是,搜索前检查的项目不一定会被检查。复选标记不随物品一起携带。例如,如果我只检查列表中的第一个项目,那么无论我的搜索是什么,显示的第一个项目(如果有的话)都将具有该复选标记。相反,在搜索时检查的项目将不会被项目携带。这是我的代码的一部分:
public class MyList extends Activity {
// List
ListView myListView;
String string_list[] = {"Paris", "London", "Milano", "Madrid", "Berlin", "Moscow", "Washington", "Amsterdam", "Dublin", "Basel"};
ArrayAdapter<String> adapter;
EditText searchBar;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// XML File
setContentView(R.layout.main_list);
// Sort Array
Arrays.sort(string_list, String.CASE_INSENSITIVE_ORDER);
// EditText
searchBar = (EditText) findViewById(R.id.searchBar);
// ListView
myListView = (ListView) findViewById(R.id.listView1);
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_multiple_choice, string_list);
myListView.setAdapter(adapter);
myListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@SuppressLint("InlinedApi")
@SuppressWarnings("deprecation")
@Override
public void onItemClick(AdapterView<?> arg0, View view,
int position, long arg3) {
}
});
myListView.setItemsCanFocus(false);
myListView.setChoiceMode(ListView.CHOICE_MODE_MULTIPLE);
// Search Bar
searchBar.addTextChangedListener(new TextWatcher() {
@Override
public void afterTextChanged(Editable arg0) {
// TODO Auto-generated method stub
}
@Override
public void beforeTextChanged(CharSequence arg0, int arg1,
int arg2, int arg3) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence arg0, int arg1, int arg2,
int arg3) {
// TODO Auto-generated method stub
// When user changes the text
MyList.this.adapter.getFilter().filter(arg0);
}
});
}
我尝试在onTextChanged期间强制检查myList
项,但似乎搜索期间显示的项目独立于myList
。如果我可以直接访问项目搜索,我可以这样做。或者让我知道是否有另一种方式。
答案 0 :(得分:0)
参考此链接,您将对listview中的搜索元素有所了解 how to update listview based on edittext value in android