我正在研究android中的测验应用程序。我们创建了 Select.java 页面,该页面显示了sqlite数据库中的问题和选项(带单选按钮)。我们还创建了一个 header.java 文件,用于显示按钮,即Select.java页面的后退和下一个按钮。
这里我们需要获取所选的单选按钮ID并需要将其发送到Header类。因为标题类包含下一个按钮onclick动作。单击下一个按钮后,所选的单选按钮值必须存储在arraylist中。我们在Select.java类中创建了单选按钮。所以我的问题是如何将选定的单选按钮ID转换为下一个按钮单击操作。请帮我解决这个问题。
先谢谢。
答案 0 :(得分:7)
您的布局xml文件应该是这样的
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<RadioGroup
android:orientation="vertical"
android:id="@+id/radiogroup"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option1"
android:text="Option1"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option2"
android:text="Option2"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option3"
android:text="Option3"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option4"
android:text="Option4"
/>
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/option5"
android:text="Option5"
/>
</RadioGroup>
</LinearLayout>
在您的活动中添加以下颂歌
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId)
{
RadioButton checkedRadioButton = (RadioButton) findViewById(checkedId);
String text = checkedRadioButton.getText().toString();
Toast.makeText(getApplicationContext(), text, Toast.LENGTH_SHORT).show();
}
});
答案 1 :(得分:3)
我知道这是一个老问题,但是我在任何地方都看不到我的答案,并且我发现它比其他答案更简单。
所以我们开始:
int myRadioChecked;
if(radioGroup.getCheckedRadioButtonId() == findViewById(R.id.YOUR_RADIO_BUTTON).getId()) {
/**Do Stuff*/
//ex.: myRadioChecked = 1;
}
答案 2 :(得分:2)
final RadioGroup radioGroup = (RadioGroup) findViewById(R.id.MyRadioGroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup arg0, int arg1) {
int selectedId = radioGroup.getCheckedRadioButtonId();
Log.i("ID", String.valueOf(selectedId));
}
});
答案 3 :(得分:0)
嗯,只需在UserBO中再添加一个成员变量来存储选定的答案。
Class UserBO {
private int userID;
private String userName;
private String question;
private String option1;
private String option2;
private String option3;
private int answerID;
//create getter and setters for above member variables
}
然后在Adapter类的onclick监听器中,执行如下操作
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup radioGroup,
int radioButtonID) {
switch(radioButtonID) {
case R.id.option1:
listItem.setAnswerID(1);
break;
case R.id.option2:
listItem.setAnswerID(2);
break;
}
}
});
然后更改您的标头构造函数以接收userarraylist(其中包含用户详细信息和答案)
ArrayList<USerBO> userList;
Header(Context context, AttributeSet attrs, ArrayList<UserBO> userALt) {
userList = userAL;
}
//on next button click
onclick() {
for(UserBO userObj: userList) {
if (userObj.getAnswerID != 0)
Log.d("AnswerID", userObj.getAnswerID);
}
}
它就像sudo代码..我希望这会对你有所帮助..
答案 4 :(得分:0)
您可以通过以下this获取所选按钮的ID。这里
int position = group.indexOfChild(radioButton);
会给你id。也可以Toast看到这样的id
Toast.makeText(MainActivity.this,"Id of radio button"+position+, Toast.LENGTH_SHORT).show();
这会弹出 - &#34;您点击的单选按钮的ID为0&#34;如果你点击第一个按钮。
答案 5 :(得分:0)
在RadioGroup类中,可以使用方法getCheckedRadioButtonId();
RadioGroup rg = findViewById(R.id.radioGroup); rg.getCheckedRadioButtonId();
返回该组中所选单选按钮的标识符。空选择时,返回值为-1。
答案 6 :(得分:-1)
这是最好的方法:
RadioButton button = findViewById(v.getId());