我想从使用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,发生在每一个....... :) –
感谢兄弟...它真的对我有帮助... –