我有一个带有listview的android应用程序.. blablabla ..提供了一个位置的标题和地址。此外,它显示以米为单位的距离和比较数据。
http://i.stack.imgur.com/k5XHF.jpg(对不起截图截图:)
每当我从SensorManagers监听器获取新的compas数据时,我会执行notifyDataSetChanged,使用新轴承更新列表,并且每一件事情都很好,但是它似乎会冻结应用程序几毫秒,没有什么严重的但用户可以肯定会感觉到这一点滞后效应。
现在回答我真正的问题:
是否可以在不执行notifyDataSetChanged的情况下仅更新“compasviews”? 我认为最好的方法是使用一些“findviewsbyid”函数,将目标保存在compasview中,只更新compasview,但我只能找到findViewById方法。
答案 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();
};
}