2011-04-21 4 views
0

친구들,오리엔테이션 변경 후 ListView의 다른 레코드를로드하는 것이 작동하지 않습니까?

다음 코드를 사용하여 listview에 적은 레코드를 표시 한 다음 "Button"을 눌러 더 많은 레코드를로드합니다.

액티비티는 오리엔테이션을 변경할 때까지 예상대로 작동합니다. 오리 엔테이션을 변경하면 더 많은 레코드를 목록보기로로드하는 것을 중지합니다.

어떤 가이드가 나에게 어떤 실수를 저지르고 있는가?

ListView listView; 
    MediaItem myData; 
    MediaItemAdapter EfficientAdapter; 
    List<MediaItem> myItemstoLoad; 

@Override 
    public void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     if(myItemstoLoad == null) 
     myItemstoLoad = new ArrayList<MediaItem>(); 

     if(savedInstanceState != null) 
     { 
      myData =(MediaItem)savedInstanceState.getSerializable("Obj"); 
     }else 
     { 

       myData = new MediaItem(); 
       MediaItem md1= new MediaItem(); 
       md1.setName("Media item 1"); 
       md1.setThumbnail("http://screenshots.en.softonic.com/en/scrn/36000/36098/2_icon1.jpg"); 
       myItemstoLoad.add(md1); 
       md1= new MediaItem(); 
       md1.setName("Media item 2"); 
       md1.setThumbnail("http://www.jellymuffin.com/icons/love/images/icon105.jpg"); 
       myItemstoLoad.add(md1); 
       md1= new MediaItem(); 
       md1.setName("Media item 3"); 
       md1.setThumbnail("http://www.mediaups.com/wp-content/uploads/2007/08/iconsetpreview.png"); 
       myItemstoLoad.add(md1); 
       md1= new MediaItem(); 
       md1.setName("Media item 4"); 
       md1.setThumbnail("http://images.motorcycle-superstore.com/ProductImages/100/2009_Icon_Merc_Hat.jpg"); 
       myItemstoLoad.add(md1); 
       myData.setList(myItemstoLoad); 
     } 

     EfficientAdapter = new MediaItemAdapter(this,myData.getList()); 
     getListView().setAdapter(EfficientAdapter); 

     Button btn=(Button)findViewById(R.id.loadMore); 
     btn.setOnClickListener(new OnClickListener() { 

     @Override 
     public void onClick(View v) { 
      AddMoreRecordsToListView(); 

     } 
    }); 

    } 

public class MediaItem implements Serializable 
    { 
     String thumbnail,name; 
     List<MediaItem> listMediaItem; 


     public List<MediaItem> getList() { 
      return listMediaItem; 
     } 

     public void setList(List<MediaItem> myItemstoLoad) { 
      this.listMediaItem = myItemstoLoad; 
     } 

     public String getThumbnail() { 
      return thumbnail; 
     } 

     public void setThumbnail(String thumbnail) { 
      this.thumbnail = thumbnail; 
     } 

     public String getName() { 
      return name; 
     } 

     public void setName(String name) { 
      this.name = name; 
     } 




    } 


    public void AddMoreRecordsToListView() 
    { 

     MediaItem md1= new MediaItem(); 
     md1.setName("Media item 5"); 
     md1.setThumbnail("http://media.myspacepimper.com/content/image/icon/icon_221.gif"); 
     myItemstoLoad.add(md1); 
     md1= new MediaItem(); 
     md1.setName("Media item 6"); 
     md1.setThumbnail("http://www.funmunch.com/icon/birthday/birthday_icon13.gif"); 
     myItemstoLoad.add(md1); 
     md1= new MediaItem(); 
     md1.setName("Media item 7"); 
     md1.setThumbnail("http://eurec.files.wordpress.com/2008/10/100px-rss-feed-icon.png"); 
     myItemstoLoad.add(md1); 
     md1= new MediaItem(); 
     md1.setName("Media item 8"); 
     md1.setThumbnail("http://simply-audio.net/iconcenter/categories/Misc/th_Icon3.png"); 
     myItemstoLoad.add(md1); 
     myData.setList(myItemstoLoad); 

     EfficientAdapter.notifyDataSetChanged(); 

    } 


@Override 
    protected void onSaveInstanceState(final Bundle outState) { 
     outState.putSerializable("Obj", myData); 
    } 

답변

0

화면을 회전 한 후 Create() 메소드가 호출됩니다. 이 동작을 원하지 않으면 회전 동작을 처리해야합니다. 먼저 활동의 매니페스트 노드에 android:configChanges="keyboardHidden|orientation" 을 추가하십시오. 그런 다음 작업 내에서 onConfigurationChanged 메서드를 무시하고 setContentView으로 전화하여 GUI를 새로운 방향으로 다시 강제 실행하십시오.

+0

나는이 메서드를 변경해야합니까 onSaveInstanceState 메서드를 사용합니까? 나는 onConfigurationChanged가이 방법의 대안이라고 생각한다. – UMAR

관련 문제