1

ListViewの更新に問題があります。最初の初期化後に私のListViewのデータを失いたくはありません。 このサイトと他のサイトで検索し、さまざまな解決策を見つけました。最後に私は以下のコードを使用しましたが、結果は得られませんでした。更新後の前の項目の更新リストビュー

private void handelpost(List<Posts> posts,Page pages) { 
    ListView listView; 
    final CustomListAdapterForPostOrgan adapter; 
    if (pages.getCurrentPage() > 1) { 

     listView = (ListView) findViewById(R.id.lv_for_post_organ); 
     adapter = new CustomListAdapterForPostOrgan(this, posts); 

     adapter.notifyDataSetChanged(); 
     listView.setAdapter(adapter); 

    } else { 

     listView = (ListView) findViewById(R.id.lv_for_post_organ); 
     adapter = new CustomListAdapterForPostOrgan(this, posts); 



     listView.setAdapter(adapter); 

    } 
} 
+0

コードのこれらのブロックがあるだけでnotifyDataSetChanged、によって異なりますこの場合は役に立たない。詳細を教えてください。なぜここでアダプタの初期化を使用しているのか教えてください。このメソッドは1回だけ呼び出されますか?または、毎回アダプターを再作成しますか? –

+0

私はすべての接続で2つのアイテムを受け取るリストビューを持っています。新しいデータを受信するたびにリストビューをアップロードしたいと同時に、以前のデータを失うことは望ましくありません。これは初めてのことで、私は経験がありません。ちょうどこれと詳細はありません。あなたが私を助けてくれますか? –

答えて

1

毎回新しいデータで新しいアダプタを作成しています。ページネーションを使用しているときはお勧めできません。以下の変更を行う必要があります。

  1. アダプタとリストビューとのArrayListクラスのレベルを宣言します。

    public class MyActivity extends Activity{ 
        private ListView mListView; 
        private CustomListAdapterForPostOrgan mAdapter; 
        private List<Posts> mPosts; 
    } 
    
  2. アダプタ、その後、あなたのArrayListを初期化し、その後ActivityonCreate()に一度のListViewへのアダプタとして設定します。

    private void onCreate(Bundle savedInstanceState) { 
         super.onCreate(); 
    
         //After you've called setContentView() etc etc. 
         mPosts = new ArrayList(); 
         mListView = (ListView) findViewById(R.id.lv_for_post_organ); 
         mAdapter = new CustomListAdapterForPostOrgan(this, mPosts); 
         mListView.setAdapter(mAdapter); 
    } 
    
  3. あなたが新しいデータを受信し、最初にあなたのクラスレベルの配列に追加して、このようなnotifyDataSetChanged()を呼び出す:

    private void handelpost(List<Posts> posts,Page pages) { 
         //add new posts to existing array.. 
         mPosts.addAll(posts); 
         //since adapter already has your array, simply make it refresh. 
         mAdapter.notifyDataSetChanged(); 
    } 
    
+0

//アダプタには既に配列があるので、単に更新するだけです。 –

+0

詳細について教えてください\t //アダプターは既に配列を持っているので、単にリフレッシュさせてください。 –

+0

アダプタ 'CustomListAdapterForPostOrgan(this、mPosts);を作成するときに、すでにアダプタに配列' mPost'を渡しています。 –

関連する問題