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);
}
나는이 메서드를 변경해야합니까 onSaveInstanceState 메서드를 사용합니까? 나는 onConfigurationChanged가이 방법의 대안이라고 생각한다. – UMAR