过滤数据时,EditText过滤器运行缓慢

时间:2009-10-30 06:05:21

标签: android listview

我的ListView有超过3000行。当我在EditText上键入以过滤ListView中的数据时,它运行缓慢。看看我的代码

final TextWatcher textChecker = 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) {

        filterData(search.getText().toString());

    }
};

private void filterData(String textinput){
    mCursor = mHelperData.searchData(textinput);
    startManagingCursor(mCursor);

    String[] from = new String[]{ MyData.KEY_ROWID,
            MyData.KEY_TITLE, MyData.KEY_DESCRIPTION };

    int[] to = new int[]{ R.id.id, R.id.title, R.id.description, R.id.icon };       
    setListAdapter(new MyAdapter(this, R.layout.list_row, mCursor, from, to ));
}

我认为使用Cursor检索数据不是一个好方法。那么,在这种情况下,有没有更好的方法来改善演讲?

2 个答案:

答案 0 :(得分:3)

提出导航模式,不涉及用户必须滚动或过滤3000行。

在具有4GB RAM,连续交流电源,19英寸LCD,全尺寸键盘和标准鼠标的四核桌面上滚动或过滤3000行会非常烦人。

同样,没有值得一提的网站在一个页面中转储用户的3000个条目......在许多情况下,使用Web浏览器的人仍在使用全尺寸屏幕,键盘和鼠标。

在手机上筛选3000行是疯了。不要让用户这样做。例如,将这3000行划分为类别,并让用户首先选择一个类别。

答案 1 :(得分:1)

只是为了添加Marks答案 - 我最近在Androidguys.com上面临同样的问题和came up with tutorial,它演示了如何编写“无尽”列表