0

メイン画面からスワイプする設定メニューを作成しようとしています。Pager Adapter を使用して、ユーザーが中央の画面からスワイプできる 3 ページ ビューを作成しました。

すなわち:

        POST SCREEN   ------SWIPE------- HOME ------SWIPE---------- SETTINGS SCREEN

ここで、設定画面に素敵なリスト ビューを表示して、ユーザーが選択して選択できるメニューを作成できるようにしたいと考えています。私が抱えている問題は、それを実装した pageAdapter と統合することです。私が思う問題は、ページのスワイプを機能させるために、多くのビューを持つアクティビティが 1 つしかないことです (この場合は 3 つです)。しかし、listView アダプターには別のアクティビティが必要です。

この場合、私は完全に間違っているかもしれませんが、いくつかの明確化は素晴らしいでしょう.

これが私がこれまでに持っているものです: MainActivity.java

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.os.Parcelable;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.view.LayoutInflater;
import android.view.View;


/** Called when the activity is first created. */
@SuppressLint("NewApi")
public class MainActivity extends Activity {

 /** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    // PAGE ADAPTER CONTENT
    MyPagerAdapter adapter = new MyPagerAdapter();
    ViewPager myPager = (ViewPager) findViewById(R.id.threepagemainview);
    myPager.setAdapter(adapter);
    myPager.setCurrentItem(1);

}


/**
 * 
 * @author Andy
 * 
 * This method is a data adapter to determine and load the appropriate content 
 * for each page the user swipes to
 * 
 * We have the main view set to case 1 -> main menu
 * and left view to post, right view to settings
 * 
 */
private class MyPagerAdapter extends PagerAdapter {

        /**
         * This will get the count for the amount of pages to return
         */
        public int getCount() {
                return 3;
        }

        /**
         * This method will inflate the appropriate layout resource file
         * depending on the users swipe position.
         */
        public Object instantiateItem(View collection, int position) {

                LayoutInflater inflater = (LayoutInflater) collection.getContext()
                                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);

                int resId = 0;
                switch (position) {
                case 0:
                        resId = R.layout.view_post;
                        break;
                case 1:
                        resId = R.layout.view_middle;
                        break;
                case 2:
                        resId = R.layout.view_settings;
                        break;
                }
                View view = inflater.inflate(resId, null);

                ((ViewPager) collection).addView(view, 0);

                return view;
        }

        @Override
        public void destroyItem(View arg0, int arg1, Object arg2) {
                ((ViewPager) arg0).removeView((View) arg2);
        }

        @Override
        public void finishUpdate(View arg0) {
        }

        @Override
        public boolean isViewFromObject(View arg0, Object arg1) {
                return arg0 == ((View) arg1);
        }

        @Override
        public void restoreState(Parcelable arg0, ClassLoader arg1) {
        }

        @Override
        public Parcelable saveState() {
                return null;
        }

        @Override
        public void startUpdate(View arg0) {
        }
}
}

また、XML ファイルについては、単純にビュー テキストを含むプレーン ファイルを用意します。これは現時点では完全に骨組みです。

どんな助けでも大歓迎です。

ありがとう

4

1 に答える 1

0

onCreate()

ViewPager myPager = (ViewPager) findViewById(R.id.threepagemainview);
LayoutInflater lf = getLayoutInflater().from(this);
postView = lf.inflate(R.layout.view_post, null);
homeView = lf.inflate(R.layout.view_middle, null);
settingsView = lf.inflate(R.layout.view_settings, null);
mListView = (ListView) settingsView.findViewById(R.id.list);
viewList = new ArrayList<View>();
viewList.add(postView);
viewList.add(homeView);
viewList.add(settingsView);
MyPagerAdapter adapter = new MyPagerAdapter(viewList);
myPager.setAdapter(adapter);
myPager.setCurrentItem(1);

そして、このように PagerAdapter を設定できます

private class MyPagerAdapter extends PagerAdapter {
    private List<View> mListViews;

    public MyPagerAdapter(List<View> mListViews) {
        this.mListViews = mListViews;
    }

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        container.addView(mListViews.get(position), 0);
        return mListViews.get(position);
    }

    @Override
    public int getCount() {
        // TODO Auto-generated method stub
        return mListViews.size();
    }

    @Override
    public boolean isViewFromObject(View arg0, Object arg1) {
        // TODO Auto-generated method stub
        return arg0==arg1;
    }
}
于 2013-05-27T03:17:15.340 に答える