我想要这个:我正在构建一些屏幕,我会遇到像
这样的问题1.The capital of India is
a. Delhi
b. Bangalore
c. Chennai
2. Are you sure?
a. Yes
b. No
现在我想要的是在一个屏幕上我想要问题1,并且在滑动(水平滚动)时我应该看到问题2.并且选项必须是单选按钮。作为一个Android noob,我知道我必须使用Horizontal scroll,但我可能在sqlite文件中有100个这样的问题:我该如何动态地执行此操作?一旦我调用了活动,就必须从文件中读取100个问题,我应该有100个这样的可滚动屏幕。帮助,我无法在Android开发者网站或此处找到这方面的内容。
答案 0 :(得分:1)
如上所述,最好的选择是收听滑动手势并替换视图中的数据。 即,您不需要为每个问题创建多个视图。 这是我会做的: 创建一个xml或多或少的视图(请注意我跳过包括layoutheight和layoutwidth等mandetory属性,你需要在xml中使用它们)
<LinearLayout
android:orientation="vertical">
<TextView
android:id="+@id/questiontext"/>
<RadioGroup
android:id="+@/answersgroup"/>
</LinearLayout>
现在参加活动:
在初始加载时,将第一个问题设置为视图:
QandA_CustomDataObject dataItem = questionArr.get(0);
((TextView)findViewById(R.id.questiontext)).setText(dataItem.question);
int answearrsize = dataItem.answers.size();
RadioGroup rg = ((RadioGroup)findViewById(R.id.answersgroup));
for(int i=0;i<answearrsize;i++) //Dynamically create the radio buttons
{
AnswerObj ao = dataItem.get(0).answers.get(i);
RadioButton rb = new RadioButton(this);
rb.setText(ao.text);
rb.setTag(ao.isCorrectAnswer); //A string saying TRUE or FALSE
rg.addView(rb);
}
现在在您执行右侧滑动或左侧滑动的手势验证后的代码部分
//Lets say you ++ or -- a variable named currentQuestionNumber based on the swipe direction)
QandA_CustomDataObject dataItem = questionArr.get(currentQuestionNumber);
((TextView)findViewById(R.id.questiontext)).setText(dataItem.question);
int answearrsize = dataItem.answers.size();
RadioGroup rg = ((RadioGroup)findViewById(R.id.answersgroup));
rg.removeAllViews(); //Clears away the last questions answer options
for(int i=0;i<answearrsize;i++) //Dynamically create the radio buttons
{
AnswerObj ao = dataItem.get(0).answers.get(i);
RadioButton rb = new RadioButton(this);
rb.setText(ao.text);
rb.setTag(ao.isCorrectAnswer); //A string saying TRUE or FALSE
rg.addView(rb);
}
现在有几种替代方法可以做到这一点。使用适配器,列表视图等。 我对所有的数据结构类进行了任意命名,但我希望你明白这一点......它更像是一种处理从一个问题转移到另一个问题的方法,使用我希望指出的相同的活动(屏幕)。
答案 1 :(得分:0)
为什么不检测滑动手势并更改活动内容,而不是水平视图?您可以找到许多关于检测滑动手势的指针。其中之一是:Fling gesture detection on grid layout