ListView包含CheckBoxes的搜索栏

时间:2014-03-26 11:31:55

标签: android listview

我正在使用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。如果我可以直接访问项目搜索,我可以这样做。或者让我知道是否有另一种方式。

1 个答案:

答案 0 :(得分:0)

参考此链接,您将对listview中的搜索元素有所了解 how to update listview based on edittext value in android