【问题标题】:EditText filter run slowly when filter data过滤数据时EditText过滤器运行缓慢
【发布时间】:2009-10-30 06:05:21
【问题描述】:

我的 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 ));
}

我认为在这里用光标检索数据不是一个好方法。那么,在这种情况下,有没有更好的方法来改善语音?

【问题讨论】:

    标签: android listview


    【解决方案1】:

    想出一个不需要用户滚动或过滤 3000 行的导航模式。

    在配备 4GB RAM、连续交流电源、19 英寸 LCD、全尺寸键盘和标准鼠标的四核台式机上滚动或过滤 3000 行会非常烦人。

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

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

    【讨论】:

    • +1 帮助开发者思考对于用户而非开发者而言什么是最好/最简单的
    • 是的,用户用手机屏幕滚动浏览 3000 行真的很难。但我在这里的应用程序仅用于“搜索”目的。无论如何,你的回答给了我一些启发,我想也许我可以在这里做出一些不同的事情。非常感谢!
    • 如果您的应用程序只是用于搜索,请不要将 3000 项放在一个列表中。相反,只需提供一个搜索字段、运行搜索并显示结果。恰当的例子:当您搜索 Android Market 时,您不会获得 Market 中所有应用程序的 ListView,然后这些应用程序会被过滤。相反,您会获得一个搜索字段,并且只会获得一个显示匹配结果的 ListView。
    • 你知道,我要在这里站出来,说有时候削减开支不是一个选择。我完成了一个应用程序,客户在多个数据库中拥有数千行数据并提供搜索功能。 99% 的用户使用搜索,但客户仍然希望能够滚动浏览整个列表并保持快速。有时,即使您的同行和平台专家让您为难,您也必须按照客户的意愿行事。
    • 起初,我想出了“给用户一个搜索框并在列表视图中返回结果”的想法,我做到了。但是让我们看看Android手机上的“智能联系人搜索”。真的很有道理!我在这里遇到的唯一问题是“3000 行缓慢”。
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-20
      • 2019-05-12
      • 1970-01-01
      • 2016-11-10
      • 2014-10-25
      • 2018-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多