单击 View Pager 中的单选按钮移至下一张幻灯片

问题描述

我正在制作一个应用,其中包含一份小型问卷,供用户询问他们的食物偏好。为了实现这一点,我正在尝试创建一个 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 (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...