让您的适配器在每个列表上保存所需信息的对象集合
项目,包括箭头旋转的浮点值.
public class Place {
private Srting name;
private double distance;
private float arrowAngle;
//-- etc etc--
覆盖适配器的getView(),设置箭头的旋转视图:
@Override
public View getView(View currentView, int position, ViewGroup parent){
//--inflate layout for each row, find views, set values etc etc--
Place p = getItem(position);
arrowView.setRotation(p.getArrowAngle());
//--return inflated view --
}
在传感器更改时,计算每个箭头的新角度,并更新适配器中的每个数据对象.
for (int i = 0 ; i < adapter.getCount(); i++){
Place p = adapter.getItem(i);
//--calculate angle--
p.setArrowAngle(newAngle);
}
adapter.notifyDataSetChanged();
但是传感器可能会变化非常快,并且ListView数据的更新过多会导致ListView滞后,限制更新,声明一个long变量lastUpdated,On传感器更改参见System.nanoTime() – lastupdated> 500,那么只能调用上面的更新代码.这将限制更新为500毫秒的间隔.