Android中的动态问卷

Android中的动态问卷,android,android-layout,listview,Android,Android Layout,Listview,我想用Android Studio做一份调查问卷。每个问题都可以回答是或否。问题是,我有一些后续问题(例如,如果问题1回答是,那么我有3个后续问题要回答)。可能需要知道的是,如果用户单击“是”按钮回答某些问题,则只会有后续问题(如果用户单击“否”,则不会有后续问题) 我是一个绝对的初学者,所以告诉我,如果你有其他的想法来解决这个问题 我的想法是制作一个自定义的listview,如果用户单击第一个答案,我想更新列表,如果现在需要添加问题(如果新问题到达列表的末尾,就可以了) 这是我至今的密码: 问

我想用Android Studio做一份调查问卷。每个问题都可以回答是或否。问题是,我有一些后续问题(例如,如果问题1回答是,那么我有3个后续问题要回答)。可能需要知道的是,如果用户单击“是”按钮回答某些问题,则只会有后续问题(如果用户单击“否”,则不会有后续问题)

我是一个绝对的初学者,所以告诉我,如果你有其他的想法来解决这个问题

我的想法是制作一个自定义的listview,如果用户单击第一个答案,我想更新列表,如果现在需要添加问题(如果新问题到达列表的末尾,就可以了)

这是我至今的密码:

问题\u activity.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">

<ListView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:id="@+id/questionsListView"
    android:layout_alignParentEnd="true"
    android:layout_alignParentTop="true"
    android:descendantFocusability="blocksDescendants"/>
</RelativeLayout>

itemView.xml:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent" android:layout_height="match_parent">


<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Medium Text"
    android:id="@+id/question"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true" />
<RadioGroup
    android:orientation="horizontal"
    android:id="@+id/radioGroup"
    android:layout_width="match_parent"
    android:layout_height="20dp"
    android:layout_alignParentEnd="true"
    android:layout_below="@+id/question">

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Yes"
        android:id="@+id/yesButton"
        android:layout_marginLeft="135dp" />

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="No"
        android:id="@+id/noButton"
        android:layout_marginRight="50dp"/>

</RadioGroup>


</RelativeLayout>

LoggedInActivity.java:

public class LoggedInActivity extends Activity {
public List<Questions> myquestions = new ArrayList<Questions>();
public List<Integer> answerList = new ArrayList<Integer>();

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.questions_activity);

    populateQuestions();
    populateListView();
    registerClickCallback();


}

private void registerClickCallback(){
    ListView list =  (ListView) findViewById(R.id.questionsListView);
    list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
        @Override
        public void onItemClick(AdapterView<?> parent, View viewClicked, int position, long id) {
            boolean clickedQuestion = myquestions.get(position).getAnswer();

        }
    });
}

private void populateQuestions() {
    myquestions.add(new Questions("Question1"));
    myquestions.add(new Questions("Question2"));
    myquestions.add(new Questions("Question3"));


}

private void populateListView() {
    ArrayAdapter<Questions> adapter = new MyListAdapter();
    ListView list = (ListView) findViewById(R.id.questionsListView);
    list.setAdapter(adapter);
}



private class MyListAdapter extends ArrayAdapter<Questions> {
    public MyListAdapter() {
        super(LoggedInActivity.this, R.layout.item_view, myquestions);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View itemView = convertView;
        if (itemView == null) {
            itemView = getLayoutInflater().inflate(R.layout.item_view, parent, false);
        }

        Questions currentQuestion = myquestions.get(position);

        TextView question = (TextView) itemView.findViewById(R.id.question);
        question.setText(currentQuestion.getQuestion());

        RadioGroup answers = (RadioGroup)         itemView.findViewById(R.id.radioGroup);

        return itemView;
    }
}
public类LoggedInActivity扩展活动{
public List myquestions=new ArrayList();
public List answerList=new ArrayList();
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.questions\u活动);
普及问题();
populateListView();
registerClickCallback();
}
私有无效注册表ClickCallback(){
ListView列表=(ListView)findViewById(R.id.questionsListView);
list.setOnItemClickListener(新的AdapterView.OnItemClickListener(){
@凌驾
public void onItemClick(AdapterView父对象、视图已单击、整型位置、长id){
布尔clickedQuestion=myquestions.get(position.getAnswer();
}
});
}
私有void populateQuestions(){
添加(新问题(“问题1”);
添加(新问题(“问题2”);
添加(新问题(“问题3”);
}
私有void populateListView(){
ArrayAdapter=新的MyListAdapter();
ListView列表=(ListView)findViewById(R.id.questionsListView);
list.setAdapter(适配器);
}
私有类MyListAdapter扩展了ArrayAdapter{
公共MyListAdapter(){
super(LoggedInActivity.this,R.layout.item_view,myquestions);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
视图项视图=转换视图;
如果(itemView==null){
itemView=GetLayoutFlater()。充气(R.layout.item_视图,父视图,false);
}
问题currentQuestion=myquestions.get(位置);
TextView问题=(TextView)itemView.findViewById(R.id.question);
question.setText(currentQuestion.getQuestion());
RadioGroup answers=(RadioGroup)itemView.findViewById(R.id.RadioGroup);
返回项目视图;
}
}
  • OnClickListener根本不起作用。我知道,我需要对getView中的RadioGroup执行一些操作,但我不知道如何(已经尝试从这里开始使用解决方案),但它不起作用

  • 如果他改变了自己的观点或者有更好的解决方案,是否有可能添加新问题并删除这些问题


  • 我将为您提供onClick侦听器部分的解决方案

    请尝试以下任一步骤

    1.尝试直接使用
    onCreate方法中的
    onClick listener

    2您可以实现
    View.OnClickListener
    ,然后创建一个
    onclick方法
    。在
    onclick方法
    中,您现在可以执行您希望执行的任何操作。

    本书有一个问卷示例。