我想你们都尝试过地图中的“Google Places”。
这是您附近的 POI 列表。
我真的很想在我的应用程序中使用 GPS 坐标列表来实现相同的功能,但这看起来非常复杂。
制作带有距离和小箭头的列表视图非常容易,但我不明白如何在用户每次移动手机时更新此列表和箭头。
现在我有一个静态列表视图。
我想知道是否有人成功创建这样的列表视图。
非常感谢您提供任何信息。
对于您想要实现的目标,有几种选择。就个人而言,我建议实现您自己的适配器(在这种情况下最有可能通过扩展 SimpleCursorAdapter)并将距离文本和罗盘标题旋转的更新封装在其中。
为了帮助进行资源管理,您可能需要在托管 ListView 的 Activity 中创建 SensorListener 和 LocationListener。每当您收到更新时,请致电您的自荐updateCompassAndLocation
Adapter 类中的方法。
在该方法中,您有两个选择。要么迭代构成所表示的数据集合的每个项目并修改指南针图形和距离文本,要么简单地将当前位置和航向记录为类中的变量,然后调用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);
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)