更新listview的viewitems而不使用notifyDataSetChanged

时间:2011-09-30 09:27:11

标签: android listview

我有一个带有listview的android应用程序.. blablabla ..提供了一个位置的标题和地址。此外,它显示以米为单位的距离和比较数据。

http://i.stack.imgur.com/k5XHF.jpg(对不起截图截图:)

每当我从SensorManagers监听器获取新的compas数据时,我会执行notifyDataSetChanged,使用新轴承更新列表,并且每一件事情都很好,但是它似乎会冻结应用程序几毫秒,没有什么严重的但用户可以肯定会感觉到这一点滞后效应。

现在回答我真正的问题:

是否可以在不执行notifyDataSetChanged的情况下仅更新“compasviews”? 我认为最好的方法是使用一些“findviewsbyid”函数,将目标保存在compasview中,只更新compasview,但我只能找到findViewById方法。

1 个答案:

答案 0 :(得分:0)

您是否在UI线程上进行了大量计算?如果是,请考虑实施AsyncTask来计算新值,然后在notifyDataSetChanged()中调用onPostExecute() - AsyncTask的方法。

private class MyAsyncTask extends AsyncTask<Params, Progress, Result> {

    @Override
    protected Result doInBackground(Params... params) {
        //Do calculations here
        return null;
    }

    protected void onPostExecute(Result result) {
        //Submit new data to the listadapter
        adapater.notifyDataSetChanged();
    };
}