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