Java 在viewpager视图中保存按钮值

Java 在viewpager视图中保存按钮值,java,android,android-viewpager,Java,Android,Android Viewpager,按照我现在的布局: 我有一个视图,用户可以从单选按钮中选择一个值,然后单击“下一步”查看下一个值。用户一直单击到最后一个页面,该页面有一个保存按钮,该按钮用于从所有页面获取所有按钮值,并将其保存到数据库中。我想知道,如何从viewpager中的视图中保存所有以前和当前的按钮值 我已经创建了一个映射来存储每个页面的值和buttonValue final HashMap<Integer, Integer> map = new HashMap<Integer,

按照我现在的布局:

我有一个视图,用户可以从单选按钮中选择一个值,然后单击“下一步”查看下一个值。用户一直单击到最后一个页面,该页面有一个保存按钮,该按钮用于从所有页面获取所有按钮值,并将其保存到数据库中。我想知道,如何从viewpager中的视图中保存所有以前和当前的按钮值

我已经创建了一个映射来存储每个页面的值和buttonValue

            final HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
            int pagePosition = position;
            int buttonSelected = buttonValue;
            map.put(pagePosition, buttonSelected);

            for (Integer key : map.keySet()){
                //key is the page #
                for (Map.Entry entry : map.entrySet())
                    System.out.printf("%s, %s;", entry.getKey(), entry.getValue());

            }
我的viewpager中有三个页面


如何返回设置,以便单击按钮并将其保存到地图的正确位置,然后滑动到下一页,单击按钮并将按钮值保存到寻呼机的正确位置,等等

像这样使用ViewPager.onPageChangeListener:

final HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
int pagePosition;

viewPager.setOnPageChangeListener(new OnPageChangeListener() {
    public void onPageScrollStateChanged(int state) {}
    public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}

    public void onPageSelected(int position) {
        pagePosition = position;
    }
});

Button button= (Button) findViewById(R.id.buttonId);
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        map.put(pagePosition, buttonSelected);
    }
});
__________________________________________________________________
或者,您可以让ViewPager向您的活动发送事件:

public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button_1:
            map.put(pagePosition, 1);
            break;
        case R.id.button_2:
            map.put(pagePosition, 2);
            break;
    }

}
pager=(ViewPager)findViewById(R.id.pager);
pager.setAdapter(new SampleAdapter(getSupportFragmentManager()));
pager.setOnPageChangeListener(this);

@Override
public void onPageScrollStateChanged(int arg0) {
    // no code here
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // no code here
}

@Override
public void onPageSelected(int position) {
    pagePosition = position;
}

你所说的调整是什么意思?谢谢。我的意思是你必须在你的代码中包含它,并测试它是否符合你的期望。但是我有一个问题,当页面最初加载时,buttonValue将为空,因此我无法获得第一页的buttonSelected值?我编辑了代码。现在你应该明白怎么去实现它了,明白了。我遵循了你的第一个方法。现在我只需要弄清楚如何从map中检索值并适当地保存到sqlitedb。谢谢我想知道如何循环映射并获得按钮值,以便保存在db列中?
public void onClick(View v) {
    switch (v.getId()) {
        case R.id.button_1:
            map.put(pagePosition, 1);
            break;
        case R.id.button_2:
            map.put(pagePosition, 2);
            break;
    }

}
pager=(ViewPager)findViewById(R.id.pager);
pager.setAdapter(new SampleAdapter(getSupportFragmentManager()));
pager.setOnPageChangeListener(this);

@Override
public void onPageScrollStateChanged(int arg0) {
    // no code here
}

@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
    // no code here
}

@Override
public void onPageSelected(int position) {
    pagePosition = position;
}