Android 使用寻呼机适配器保存和恢复视图寻呼机的状态
我正在使用带有寻呼机适配器的视图寻呼机。问题是我不能使用片段。因此,所有操作都是使用视图完成的。下面是代码Android 使用寻呼机适配器保存和恢复视图寻呼机的状态,android,listview,android-viewpager,parcelable,Android,Listview,Android Viewpager,Parcelable,我正在使用带有寻呼机适配器的视图寻呼机。问题是我不能使用片段。因此,所有操作都是使用视图完成的。下面是代码 private class MyPagerAdapter extends PagerAdapter { private View temp; public MyPagerAdapter() { } @Override public int getCount() { return 3; } public void g
private class MyPagerAdapter extends PagerAdapter {
private View temp;
public MyPagerAdapter() {
}
@Override
public int getCount() {
return 3;
}
public void get(ViewParent viewParent){
temp=(View) viewParent;
}
@Override
public int getItemPosition(Object object) {
if(object.equals(temp)){
Log.d("Serve","The gridview is about to be removed");
return POSITION_NONE;
}
else {
Log.d("Serve","The gridview is not to be removed");
return POSITION_UNCHANGED;
}
}
public Object instantiateItem(View collection, int position) {
LayoutInflater inflater = (LayoutInflater) collection.getContext()
.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
Log.d("SERVE","3");
View view=null;
switch (position) {
case 0:
if(albums==-1){
view = inflater.inflate(R.layout.grid, null);
gv=(GridView)view.findViewById(R.id.grid_view);
gridAdapter=new GridAdapter(Serve.this,Artists.songList,0);
gv.setAdapter(gridAdapter);
gv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> v, View arg1,
int pos, long arg3) {
get(v.getParent());
setAlbum(pos);
notifyDataSetChanged();
}
});
}
else {
view = inflater.inflate(R.layout.activity_title, null);
lv=(ListView)view.findViewById(R.id.music_list);
//lv.setFadingEdgeLength(0);
songAdapter=new SongAdapter(Serve.this,Artists.songList,0,albums);
/*SwingRightInAnimationAdapter swingRightInAnimationAdapter = new SwingRightInAnimationAdapter(songAdapter);
// Assign the ListView to the AnimationAdapter and vice versa
swingRightInAnimationAdapter.setAbsListView(lv);
lv.setAdapter(swingRightInAnimationAdapter);*/
lv.setAdapter(songAdapter);
lv.setOnItemClickListener(new OnItemClickListener(){
@Override
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
for(int i=0;i<Artists.songList.size();i++){
if(Artists.songList.get(i).getTitle().equals
(((SongAdapter.getAlbumSongs().get(position))))){
songPicked(i);
break;
}
}
ChatHeadService.updateHead();
}
});
}
break;
//Removed case 1 and case 2 because they are similar to case 0.
Log.d("SERVE","The view is about to be initialised");
/*View view = inflater.inflate(resId, null);
final ArrayList<String> list = new ArrayList<String>();
for (int i = 0; i < names.length; ++i) {
list.add(names[i]+i+1);
}*/
//lv.setAdapter(songAdapter);
((ViewPager) collection).addView(view, 0);
return view;
}
@Override
public CharSequence getPageTitle(int pos) {
if(pos==0) return "Albums";
else if(pos==1) return "Artists";
else if(pos==2) return "Songs";
else return "Genre";
}
@Override
public void destroyItem(View collection, int position, Object view) {
((ViewPager) collection).removeView((View) view);
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == object;
}
@Override
public Parcelable saveState() {
return null;
}
@Override
public void restoreState(Parcelable arg0, ClassLoader arg1) {
}
私有类MyPagerAdapter扩展了PagerAdapter{
私用视图;
公共MyPagerAdapter(){
}
@凌驾
public int getCount(){
返回3;
}
public void get(ViewParent ViewParent){
temp=(视图)viewParent;
}
@凌驾
public int getItemPosition(对象){
if(对象等于(临时)){
Log.d(“服务”,“网格视图即将被删除”);
返回位置\无;
}
否则{
Log.d(“服务”,“不删除gridview”);
返回位置_不变;
}
}
公共对象实例化项(视图集合,int位置){
LayoutInflater充气器=(LayoutInflater)集合。getContext()
.getSystemService(上下文布局\充气机\服务);
日志d(“送达”、“3”);
视图=空;
开关(位置){
案例0:
如果(相册==-1){
视图=充气机。充气(R.layout.grid,空);
gv=(GridView)view.findviewbyd(R.id.grid\u视图);
gridAdapter=新的gridAdapter(service.this,Artists.songList,0);
gv.设置适配器(网格适配器);
gv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
公共链接(AdapterView v,视图arg1,
内部位置,长arg3){
get(v.getParent());
设置相册(pos);
notifyDataSetChanged();
}
});
}
否则{
视图=充气机。充气(R.layout.activity\u title,空);
lv=(ListView)view.findViewById(R.id.music\u list);
//低压设置衰减边缘长度(0);
songAdapter=新的songAdapter(Serve.this,Artists.songList,0,albums);
/*SwingRightInAnimationAdapter SwingRightInAnimationAdapter=新的SwingRightInAnimationAdapter(songAdapter);
//将ListView指定给AnimationAdapter,反之亦然
swingRightInAnimationAdapter.setAblistView(lv);
低压设置适配器(swingRightInAnimationAdapter)*/
低压设置适配器(songAdapter);
lv.setOnItemClickListener(新的OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父级、视图、,
内部位置,长id){
对于(int i=0;i