2013-05-06 6 views
0

그래서 WebService 및 데이터베이스에서 가져온 ListView 목록 항목이있는이 응용 프로그램을 사용하고 있습니다. 이 목록에서 사용자가 현재 목록의 끝에 가까울 때 새로 고침하고 더 많은 itens를로드하려면 당김이 필요합니다. 새로 고침하고 끝 가까이에있을 때 하중이 더 많이 작용하도록 잡아 당깁니다. 그러나 문제는 항목을 추가 할 때 목록의 상단이나 끝에 항목을 추가하는 경우 새 항목을로드하고 이전 항목을 제외하는 전체 목록을 새로 고치는 것입니다. 그래서, 어떻게 하나의 ListView 끝에 또는 상단에 항목을 추가 할 수 있습니까? 여기 ListView의 끝에 항목 추가

일부 코드

은 도움이 : 나는 새 항목을 추가 할 경우

@Override 
    protected void onPostExecute(Boolean result) { 
     Log.d("Async 4", "post"); 

     SampleAdapter adapter = new SampleAdapter(getActivity()); 


     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 

     for (int i = 0; i < 1; i++) { 
      for (int w = 0; w < 1; w++) { 
       for (int j = 0; j < 1; j++) { 
        int cont = 10; 
        cont++; 
        for (int k = 0; k < cont; k++) { 
         adapter.add(new SampleItem("" + title[k],"" + categoria_[i],"" + data_publicao[i], 1)); 
         // Log.d("", "" + title[k]); 
         setListAdapter(adapter); 
        } 
       } 
      } 
     } 
     if (dialog.isShowing()) { 
      dialog.dismiss(); 
     } 
     pullToRefreshListView.onRefreshComplete(); 
    } 

} 

이 코드입니다. 방금 데이터를로드하는 비동기 작업 (WebService/Database에서)을 호출하고 onPostExecute가 새로운 항목을 추가하도록 제안됩니다.

내 프로젝트의 코드가 더 필요하면 질문하고 더 추가하겠습니다. 미리 감사드립니다.

+0

항목 목록과 'ListView'에 연결되는 어댑터의 두 가지 항목으로 생각하십시오. 새 데이터가 도착하면 항목 목록을 업데이트 한 다음 새로 편집 한 목록으로 어댑터를 업데이트합니다. 사용중인 어댑터에 데이터가 들어있는 것으로 보입니다. 이 경우 목록에서 add()가 새 항목을 넣는 위치와 같이 목록을 일부 제어 할 수 없습니다. –

답변

2

문제는 더 많은 항목이 추가 될 때마다 어댑터를 다시 만드는 것입니다.

adapter = new SampleAdapter(getActivity()); 
setListAdapter(adapter); 

어댑터 작성을 활동의 onCreate 메소드로 이동하고 활동 클래스의 필드로 만드십시오.

그냥 모든 추가 한 후 루프의 후 어댑터를 통지하는 대신 루프가 다시 어댑터를 설정하는 다음

;

adapter.notifyDataSetChanged() 
+0

예, 그랬습니다. 이것은 많은 실수를 피하기 위해 많은 활동과 단편을 가진 첫 번째 큰 앱입니다. 고마워요! – Carlos

+0

환영과 행운을 빌어 요 :) –