2016-08-22 4 views
0

adapter.notifyDataSetChanged();私はforループの値を取得していますが、値は画面に表示されていません。 私のjavaファイル:NotifyDataSetChangedが自分のコードで動作していません。

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 まずNottification 2番目のメッセージである 3番目のメッセージ

+0

あなたは確実にobjects.size()が> 0ですか? – Opiatefuchs

+0

確かにオブジェクトのサイズは3で、私はループのために見ることができます –

+0

...アダプタをlistViewに設定した後、通常はadapterNotifyDataSetChanged()を呼び出します。 – Opiatefuchs

答えて

7

あなたはブランドの新しい配列を作成し、それがアダプターに接続されていません。

resultsAsString = new String[objects.size()]; 

notifyは機能しますが、そのデータセットを更新するためにそのデータセットへの参照がなくなりました。アダプタは、まだ空の最初の文字列配列を保持しています

アラレイリストを使用してデータを入力することをお勧めします。adapter.addそれによって、

を通知し、また、解析結果は、重複したデータまたは


をしない限り、単に新しいアダプタを作成して、再度、ListViewコントロールに

それを設定完了したとき adapter.clearを使用する必要はありません
+1

の後にコードが発生するため、新しい配列にデータが追加されたため、notifyDataSetChanged()は元々渡された配列を空にしても機能します。 – Yazan

+0

こんにちはcricket_007、答えをありがとう、私は今Arraylistまたはアダプタを使用する必要がありますか? –

+0

これは2つの異なるものです。 ArrayListはアダプタの中に格納されます。あなたの 'String []'のように... ArrayList ' –

関連する問題