我想你已經在地圖中嘗試了「Google地方信息」。 這是接近你的興趣點列表。Android:指南針+在列表視圖中的距離
我真的很想在我的應用程序中使用GPS座標列表來做同樣的功能,但看起來很複雜。
使距離和小箭頭的列表視圖很容易,但我不明白如何更新此列表和箭頭每次用戶移動他的手機。
現在我有一個靜態列表視圖。
我想知道,如果有人成功創建這樣一個列表視圖。
非常感謝任何信息。
我想你已經在地圖中嘗試了「Google地方信息」。 這是接近你的興趣點列表。Android:指南針+在列表視圖中的距離
我真的很想在我的應用程序中使用GPS座標列表來做同樣的功能,但看起來很複雜。
使距離和小箭頭的列表視圖很容易,但我不明白如何更新此列表和箭頭每次用戶移動他的手機。
現在我有一個靜態列表視圖。
我想知道,如果有人成功創建這樣一個列表視圖。
非常感謝任何信息。
有幾個選項可供您嘗試實現。就個人而言,我建議實現您自己的適配器(很可能在這種情況下通過擴展SimpleCursorAdapter)並將更新封裝在距離文本和指南針標題旋轉中。
爲了幫助進行資源管理,您可能希望在將承載ListView的Activity中創建SensorListener和LocationListener。無論何時您收到更新請求,都會在您的Adapter類中調用您自推出的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);
}
對不起。幾個月前我嘗試了您的解決方案,我對此非常滿意。非常感謝! – 2011-02-08 22:20:20
@Waza_Be如果你可以發佈你已經實現的解決方案,這將是很好的,我也試圖做同樣的事情,我面臨的問題與指南針標題rotation.Thanks .. – dharan 2012-09-05 10:56:48