java – Android:列表视图中的罗盘距离

我想你都在Google地图上尝试过“Google地方资讯”.
这是一个靠近你的POI列表.

我真的想在我的应用程序中使用GPS坐标列表做同样的功能,但这似乎真的很复杂.

使用距离和小箭头进行列表视图非常容易,但是每次用户移动手机时,我无法理解如何更新此列表和箭头.

现在我有一个静态列表视图.

我想知道是否有人成功创建了这样的列表.

非常感谢任何信息.

解决方法

有几个选择,你想实现什么.就个人而言,我建议您实现自己的适配器(在这种情况下很可能通过扩展SimpleCursorAdapter),并将更新封装在距离文本和罗盘旋转范围内.

为了帮助资源管理,您可能希望在将承载ListView的Activity中创建一个SensorListener和LocationListener.每当您从适配器类中收到更新调用自动滚动的updateCompassAndLocation方法.

从那个方法你有两个选择.对组成所收集数据的每个项目进行迭代,并修改罗盘图形和距离文本,或者简单地将当前位置和标题记录为类中的变量,并调用notifyDataSetChanged强制适配器更新视图本身在getView方法内.在任一情况下(特别是后者),您需要在getView中设置距离文本和航向罗盘值.

@Override
public View getView(int position,View convertView,ViewGroup parent) {
  LinearLayout myView;

  MyPOI item = getItem(position);

  Location poiLocation = item.getLocation;

  int compassheading = // Calculate heading relative to current heading
  float distance = // Calculate distance to POI


  if (convertView == null) {
    myView = new LinearLayout(getContext());
    String inflater = Context.LAYOUT_INFLATER_SERVICE;
    LayoutInflater vi = (LayoutInflater)getContext().getSystemService(inflater);
    vi.inflate(resource,myView,true);
  } else {
    trainView = (LinearLayout) convertView;
  }

  TextView distanceView = (TextView)trainView.findViewById(R.id.distance);
  ImageView compassView = (ImageView)trainView.findViewById(R.id.compass);

  distanceView.setText(String.valueOf(distance);
  compassView.setimageLevel(compassheading);
}

相关文章

Android性能优化——之控件的优化 前面讲了图像的优化,接下...
前言 上一篇已经讲了如何实现textView中粗字体效果,里面主要...
最近项目重构,涉及到了数据库和文件下载,发现GreenDao这个...
WebView加载页面的两种方式 一、加载网络页面 加载网络页面,...
给APP全局设置字体主要分为两个方面来介绍 一、给原生界面设...
前言 最近UI大牛出了一版新的效果图,按照IOS的效果做的,页...