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에 의해 차이를 이 경우에는 쓸모가 없다. 자세한 내용을 설명해 주시겠습니까? 왜 여기에 어댑터 초기화를 사용하고 있는지 말해 주실 수 있습니까? 이 메서드는 한 번만 호출됩니까? 또는 매번 어댑터를 다시 만드시겠습니까? –

+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' 배열을 이미 전달했습니다. –

관련 문제