问题描述
我正在制作一个应用,其中包含一份小型问卷,供用户询问他们的食物偏好。为了实现这一点,我正在尝试创建一个 ViewPager,其布局包含 Radiogroup 内的 Radiobuttons。当用户选择一个单选按钮时,我希望我的查看寻呼机移动到下一页。我无法让它发挥作用。我在 Google 上找不到与此类似的内容。
寻呼机适配器:
public class SliderAdapter extends PagerAdapter {
Context context;
LayoutInflater layoutInflater;
int position;
RadioGroup radioGroup;
ImageView imageView;
TextView textView;
RadioButton one,two,three;
// SharedPreferences sharedPreferences;
public SliderAdapter(Context context) {
this.context = context;
position = 0;
}
int[] images = {R.drawable.meat_preferences,R.drawable.dairy_preferences,R.drawable.spices_preferences};
int[] questions = {R.string.onboarding_2,R.string.onboarding_3,R.string.onboarding_4};
int[][] answers = {{R.string.onboarding_2_1,R.string.onboarding_2_2,R.string.onboarding_2_3},{R.string.onboarding_3_1,R.string.onboarding_3_2,R.string.onboarding_3_3},{R.string.onboarding_4_1,R.string.onboarding_4_2,R.string.onboarding_4_3}};
@Override
public int getCount() {
return questions.length;
}
@Override
public boolean isViewFromObject(@NonNull View view,@NonNull Object object) {
return view == (ConstraintLayout) object;
}
@NonNull
@Override
public Object instantiateItem(@NonNull ViewGroup container,int position) {
layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
View view = layoutInflater.inflate(R.layout.onboarding_slides_layout,container,false);
imageView = view.findViewById(R.id.slide_image);
textView = view.findViewById(R.id.questions);
radioGroup = view.findViewById(R.id.radio_group);
// view.setTag("Radio" + position);
radioGroup.setonCheckedchangelistener(new RadioGroup.OnCheckedchangelistener() {
@Override
public void onCheckedChanged(RadioGroup group,int checkedId) {
RadioButton radio_button = group.findViewById(checkedId);
Toast.makeText(context,radio_button.getText(),Toast.LENGTH_SHORT)
.show();
}
});
imageView.setimageResource(images[position]);
textView.setText(questions[position]);
for (int i = 0; i < radioGroup.getChildCount(); i++) {
((RadioButton) radioGroup.getChildAt(i)).setText(answers[position][i]);
}
container.addView(view);
return view;
}
@Override
public void destroyItem(@NonNull ViewGroup container,int position,@NonNull Object object) {
container.removeView((ConstraintLayout)object);
}
}
从主要活动调用的入职课程:
public class Onboarding extends AppCompatActivity {
ViewPager viewPager;
LinearLayout linearLayout;
ImageView zero,one,two;
ImageView[] imageViews;
Button button;
SliderAdapter pagerAdapter;
RadioGroup radioGroup;
RadioButton option_1,option_2,option_3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_onboarding);
viewPager = findViewById(R.id.slider);
linearLayout = findViewById(R.id.dots);
button = findViewById(R.id.next_btn);
zero = findViewById(R.id.intro_indicator_1);
one = findViewById(R.id.intro_indicator_2);
two = findViewById(R.id.intro_indicator_3);
imageViews = new ImageView[]{zero,two};
//call adapter
pagerAdapter = new SliderAdapter(this);
viewPager.setAdapter(pagerAdapter);
viewPager.addOnPagechangelistener(new ViewPager.OnPagechangelistener() {
@Override
public void onPageScrolled(int position,float positionOffset,int positionOffsetPixels) {
}
@SuppressLint("UseCompatTextViewDrawableApis")
@Override
public void onPageSelected(int position) {
updateIndicators(position);
if (position == 2){
button.setVisibility(View.VISIBLE);
button.setCompoundDrawableTintList(ColorStateList.valueOf(Color.parseColor("#4D000000")));
button.setonClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(getApplicationContext(),MainActivity.class);
startActivity(intent);
}
});
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
}
void updateIndicators(int position) {
for (int i = 0; i < imageViews.length; i++) {
imageViews[i].setBackgroundResource(
i == position ? R.drawable.indicator_selected : R.drawable.indicator_unselected
);
}
}
}
如何在“入职”课程中获得无线电组选择?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)