NotifyDataSetChanged 在我的代码中不起作用
NotifyDataSetChanged is not working in my code
adapter.notifyDataSetChanged();在 android 中不起作用 我正在检索 for 循环中的值,但这些值未显示在屏幕上。
我的 java 文件:
private static final String TAG_NAME="Notification";
String[] resultsAsString = {""};
ListView listView;
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, resultsAsString);
ParseQuery<ParseObject> parseObjectParseQuery=new ParseQuery<ParseObject>("PushNotifications");
parseObjectParseQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e==null){
resultsAsString = new String[objects.size()];
Log.d(TAG_NAME,"Objects size in MyService is:"+objects.size());
if(objects.size()>0){
Log.d(TAG_NAME,"Object size is "+objects.size());
for(int index = 0; index < objects.size(); index++){
resultsAsString[index] = objects.get(index).getString("Message");
Log.d(TAG_NAME,"result value is:"+resultsAsString[index]);
}
adapter.notifyDataSetChanged();
}else {
Log.d(TAG_NAME,"Object size is "+objects.size());
}
}
}
});
listView = (ListView) findViewById(R.id.notificatio_listView);
listView.setAdapter(adapter);
我的logcat显示:
MyService 中的对象大小 is:3
对象大小为 3
第一次通知
第二条消息
第三条消息
您创建了一个全新的阵列,但它没有连接到适配器。
resultsAsString = new String[objects.size()];
通知确实有效,但您不再在适配器中引用该数据集来更新它。适配器仍然持有初始的空字符串数组
我建议您使用 Arraylist 并简单地 adapter.add
来填充数据。这样就不用通知了
并且在解析结果完成时也使用 adapter.clear
除非你想要重复数据
或者,只需创建一个新的 Adapter 并再次将其设置在 ListView 上
adapter.notifyDataSetChanged();在 android 中不起作用 我正在检索 for 循环中的值,但这些值未显示在屏幕上。 我的 java 文件:
private static final String TAG_NAME="Notification";
String[] resultsAsString = {""};
ListView listView;
ArrayAdapter<String> adapter;
adapter = new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1, resultsAsString);
ParseQuery<ParseObject> parseObjectParseQuery=new ParseQuery<ParseObject>("PushNotifications");
parseObjectParseQuery.findInBackground(new FindCallback<ParseObject>() {
@Override
public void done(List<ParseObject> objects, ParseException e) {
if (e==null){
resultsAsString = new String[objects.size()];
Log.d(TAG_NAME,"Objects size in MyService is:"+objects.size());
if(objects.size()>0){
Log.d(TAG_NAME,"Object size is "+objects.size());
for(int index = 0; index < objects.size(); index++){
resultsAsString[index] = objects.get(index).getString("Message");
Log.d(TAG_NAME,"result value is:"+resultsAsString[index]);
}
adapter.notifyDataSetChanged();
}else {
Log.d(TAG_NAME,"Object size is "+objects.size());
}
}
}
});
listView = (ListView) findViewById(R.id.notificatio_listView);
listView.setAdapter(adapter);
我的logcat显示: MyService 中的对象大小 is:3 对象大小为 3 第一次通知 第二条消息 第三条消息
您创建了一个全新的阵列,但它没有连接到适配器。
resultsAsString = new String[objects.size()];
通知确实有效,但您不再在适配器中引用该数据集来更新它。适配器仍然持有初始的空字符串数组
我建议您使用 Arraylist 并简单地 adapter.add
来填充数据。这样就不用通知了
并且在解析结果完成时也使用 adapter.clear
除非你想要重复数据
或者,只需创建一个新的 Adapter 并再次将其设置在 ListView 上