过滤列表视图会给出错误的结果

时间:2011-08-02 17:13:29

标签: android listview filter

如果某些事情没有意义,请告诉我。我知道我的问题并不总是准确的。

我有一个listview,我试图按名称过滤。我有一个EditText字段,用户键入该字段以过滤列表视图。覆盖DirectoryListing类中的toString,允许进行正确的比较。

问题出在这里:说我有以下内容,每个都在listview中各自的行:“AC,BC,CD,AE”。现在在编辑文本字段中,如果输入B,则列表视图显示“AC”。 A将显示AC,BC。正如您所看到的,它将显示与输入内容匹配的项目数量,但它只显示自上而下的适当数量,而不是正确的项目。知道我做错了什么吗?这是我的代码。

//imports and some variable declaration
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.directory);
        final Handler handler = new Handler() {
            //fill the listview to start
            }

        };
        listing = new ArrayList<DirectoryListing>();
        this.adapter = new DirectoryAdapter(this, R.layout.dir_rows, listing);
        setListAdapter(adapter);
        ProgressDialog = ProgressDialog.show(DirectoryActivity.this, "Please wait...", "Retrieving data ...", true);
        viewOrders = new Runnable() {
            //execute filling the original listview
        };
        TextWatcher filterTextWatcher = new TextWatcher() {

            public void afterTextChanged(Editable s) {
            }

            public void beforeTextChanged(CharSequence s, int start, int count, int after) {
            }

            public void onTextChanged(CharSequence s, int start, int before,
                    int count) {
                adapter.getFilter().filter(s);
                adapter.notifyDataSetChanged();
            }

        };

        filterText = (EditText) findViewById(R.id.search_box);
        filterText.addTextChangedListener(filterTextWatcher);
        Thread thread = new Thread(null, viewOrders, "Background");
        thread.start();

    }
    //other code

}

0 个答案:

没有答案