我想從使用notifyDatasetChanged()的位置偵聽器的onLocationChanged函數更新我的Activity的ListView,但它不起作用。我可以使用setListAdapter從我的代碼中的相同點,這將工作。notifydatasetchanged從內部偵聽器不工作
這裏是我的代碼:
public class TestListeners extends ListActivity {
ArrayAdapter adapter;
private final LocationListener networkLocationListener = new LocationListener() {
@Override
public void onStatusChanged(String provider, int status, Bundle extras) {
switch (status) {
case LocationProvider.AVAILABLE:
break;
case LocationProvider.OUT_OF_SERVICE:
break;
case LocationProvider.TEMPORARILY_UNAVAILABLE:
break;
}
}
@Override
public void onProviderEnabled(String provider) {
}
@Override
public void onProviderDisabled(String provider) {
}
@Override
public void onLocationChanged(Location location) {
checkProximity(location.getLatitude(), location.getLongitude(), cx);
}
};
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//get a list here venueNamesArray
//etc
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, android.R.id.text1,
venueNamesArray);
setListAdapter(adapter);
}
private void checkProximity(double curLat, double curLon, Context cx) {
//get a different list here venueNamesArray
//etc
adapter = new ArrayAdapter<String>(getApplicationContext(),
android.R.layout.simple_list_item_1, android.R.id.text1,
venueNamesArray);
adapter.notifyDataSetChanged();//this doesnt work and no error is thrown
setListAdapter(adapter);//this works
}
}
我想用notifyDatasetChanged(的原因),而不是setListAdapter因爲ListView的滾動回到頂端時,如果設定爲。當我使用notifyDatasetChanged()時,沒有錯誤拋出,所以我很難看出爲什麼這不起作用。
我已經嘗試使用正常的ListView而不是擴展ListActivity並遇到同樣的問題。
其實我的問題是我用錯了類型的數組來填充我的ArrayList在這個線程看到http://stackoverflow.com/questions/3200551/unable-to-modify-arrayadapter-in-listview我已經錯誤地複製了新的ArrayAdapter初始值設定器 – brux
yup,發生在每一個....... :) –
感謝兄弟...它真的對我有幫助... –