NotifyDataSetChanged在我的代码中不起作用

时间:2016-08-22 13:34:46

标签: android listview android-arrayadapter

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中的对象大小为:3 对象大小为3 第一次通知 第二条消息 第三条消息

1 个答案:

答案 0 :(得分:7)

您创建了一个全新的阵列,但它没有连接到适配器。

adapter.add

通知确实有效,但您不再在适配器中引用该数据集以进行更新。适配器仍然保持初始的空String数组

我建议您使用Arraylist并简单adapter.clear填写数据。有了这个,就没有必要通知

并且在Parse结果完成时也使用{{1}},除非您需要重复数据

或者,只需制作一个新的适配器并再次在ListView上设置