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