2016-03-25 8 views
0

データベースから取得した既存のデータをListViewに追加する必要がありますが、開始または更新操作なしで「more」ボタンを使用します。arrayadapterを新しいデータで更新またはマージするmore -

私はadapter.AddAll(NewAdapter)を使用してこの方法を提案しましたが、その行の画像に表示されているように彼はxmlフィールドを特定していませんでした。しかし、アダプターは同じです。新しいアダプターを使って新しいリストビューを作成するには、正しく表示されます。

enter image description here

任意の提案?

@Override 
    protected void onPostExecute(List<RssItem> result) { 
     progressBar.dismiss(); 

     // Get a ListView from main view 
     ListView itcItems = (ListView) findViewById(R.id.listMainView); 

     if (Integer.parseInt(limit) < 1) { 
      adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
      itcItems.setAdapter(adapter); 
      itcItems.setOnItemClickListener(new ListListener(result, local)); 

     } else { 

      Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 

      if (Nadapter.getCount() == 0){ 
       final Button btMais = (Button) findViewById(R.id.btMais); 
       btMais.setVisibility(View.GONE); 
       Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
      } else { 
       adapter.addAll(Nadapter); 
       itcItems.setAdapter(adapter); 
       itcItems.setOnItemClickListener(new ListListener(result, local)); 
      } 
     } 
    } 

終了コードとヘルプShadabで実行されている:あなたは、アダプタではない新しいアダプタ上の項目を追加する必要が

@Override 
    protected void onPostExecute(List<RssItem> result) { 
     progressBar.dismiss(); 

     // Get a ListView from main view 
     ListView itcItems = (ListView) findViewById(R.id.listMainView); 

     if (Integer.parseInt(limit) < 1) { 
      adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
      itcItems.setAdapter(adapter); 
      itcItems.setOnItemClickListener(new ListListener(result, local)); 

     } else { 

      Nadapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 

      if (Nadapter.getCount() == 0){ 
       final Button btMais = (Button) findViewById(R.id.btMais); 
       btMais.setVisibility(View.GONE); 
       Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
      } else { 
       adapter.addAll(result); 
       adapter.notifyDataSetChanged(); 
      } 
     } 
    } 
+0

あなたのアダプターにいくつかの新しいデータを追加したい場合は、あなたが)(** notifyDataSetChangedを使用して、「それを知らせる」する必要が**(これは、新しいデータやリフレッシュリストビューを追加する)ことができますね! –

答えて

0

新しいアダプタを作成してマージする必要はありませんが、既存のアダプタに新しいデータを設定し、notifyDataSetChanged()を使用して最新のデータに更新する必要があります。

@Override 
     protected void onPostExecute(List<RssItem> result) { 
      progressBar.dismiss(); 

      // Get a ListView from main view 
      ListView itcItems = (ListView) findViewById(R.id.listMainView); 

      if (Integer.parseInt(limit) < 1) { 
       adapter = new ArrayAdapter<RssItem>(local, android.R.layout.simple_list_item_1, result); 
       itcItems.setAdapter(adapter); 
       itcItems.setOnItemClickListener(new ListListener(result, local)); 

      } else { 



       if (Nadapter.getCount() == 0){ 
        final Button btMais = (Button) findViewById(R.id.btMais); 
        btMais.setVisibility(View.GONE); 
        Toast.makeText(getBaseContext(), "Don't more data.", Toast.LENGTH_SHORT).show(); 
       } else { 
        //Whatever your initial list was add the new data in that list 
        oldList.addAll(result); 
        adapter.notifyDataSetChanged(); 
       } 
      } 
     } 
+0

ArrayAdapterのデータを扱うときに、似たようなことを試してみるまで間違っていると告白しますが、もう一度setAdapterを使います。あなたが指示したとおりに働いていますが、(新しいアダプター-Nadapter)Shadabに感謝します。 –

関連する問題