Android 使用recyclerView和碎片进行测试的申请
你好)我是Android开发的新手。我必须创建一个通过测试的应用程序。我做的测试就是这样的。有三种类型的问题:输入、符号选择和多选。 我随机抽取10个问题,并将它们放入回收视图。当我按下按钮RecyclerView scroll并滚动到最后一个项目时,测试将完成 这是我的班级:Android 使用recyclerView和碎片进行测试的申请,android,kotlin,Android,Kotlin,你好)我是Android开发的新手。我必须创建一个通过测试的应用程序。我做的测试就是这样的。有三种类型的问题:输入、符号选择和多选。 我随机抽取10个问题,并将它们放入回收视图。当我按下按钮RecyclerView scroll并滚动到最后一个项目时,测试将完成 这是我的班级: @Parcelize class Test (var id: Int, var numberQuestion: String, var que
@Parcelize
class Test (var id: Int,
var numberQuestion: String,
var question: String,
var questionImageSrc: String,
var examination: Boolean,
var typeQuestion: String,
var singleChoiceAnswers: ArrayList<singleChoiceAnswer>,
var multipleChoiceAnswers: ArrayList<multipleChoiceAnswers>,
var inputAnswer: ArrayList<inputAnswer>): Parcelable{
}
@Parcelize
class multipleChoiceAnswers(var letter: String,
var text: String,
var correctAnswer: Boolean,
var checked: Boolean):Parcelable
@Parcelize
data class singleChoiceAnswer(var letter: String,
var text: String,
var correctAnswer: Boolean,
var checked: Boolean):Parcelable
@Parcelize
data class inputAnswer(var correctAnswer: String,
var userAnswer: String):Parcelable
对于第二个片段:
class Fragment2 : Fragment() {
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
public override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView = inflater.inflate(R.layout.fragment2, container, false)
val item = getArguments()?.getParcelable("ITEM") as Test?
val qI: String?
val questionNumber = rootView.findViewById(R.id.questionNumber) as TextView
val questionText = rootView.findViewById(R.id.Question) as TextView
val questionImage = rootView.findViewById(R.id.questionImage) as ImageView
questionNumber.text = item?.numberQuestion
questionText.text = item?.question
if (!item?.questionImageSrc.isNullOrEmpty()) {
qI = item?.questionImageSrc
Picasso.get().load(qI).into(questionImage)
questionImage.setOnClickListener() {
val context: Context = this.getContext()!!
val intent = Intent(context, OpenImageActivity::class.java)
intent.putExtra("imageResource", qI)
startActivity(intent)
}
}
val radioGroup = rootView.findViewById(R.id.radioGroupSetectTest) as RadioGroup
val count = getArguments()!!.getInt("COUNT_KEY")
val context = getContext()
for (i in 0 until count) {
val curentRB = RadioButton(context)
val curLetter = item!!.singleChoiceAnswers[i].letter
val curText = item.singleChoiceAnswers[i].text
curentRB.setId(i)
curentRB.setText(curLetter + " " + curText)
curentRB.setPadding(0, 30, 0, 30)
radioGroup.addView(curentRB)
}
radioGroup.setOnCheckedChangeListener(
RadioGroup.OnCheckedChangeListener{ radioGroup, i ->
item!!.singleChoiceAnswers[i].checked=true
if (item!!.singleChoiceAnswers[i].checked==item!!.singleChoiceAnswers[i].correctAnswer)
{
item!!.examination=true
}
if (item!!.singleChoiceAnswers[i].checked!=item!!.singleChoiceAnswers[i].correctAnswer)
{
item!!.examination=false
}
}
)
return rootView
}
}
我还没有完成第三个片段)
我必须如何将项目从片段返回到活动
(提前谢谢你)
对我的英语很抱歉
class TestAdapter(val test : ArrayList<Test>, private val testAdapterCallback: (Test, Int)-> Unit) : RecyclerView.Adapter<TestAdapter.ViewHolder>(){
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
val v = LayoutInflater.from(parent.context).inflate(R.layout.test_view_item, parent, false)
return ViewHolder(v)
}
override fun getItemCount(): Int {
return test.size
}
override fun onBindViewHolder(holder: ViewHolder, position: Int) {
val num : Test = test[position]
holder.textView.text = num.id.toString()
holder.cardView.setOnClickListener(){
testAdapterCallback(num, position)
}
}
inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView){
val cardView = itemView.findViewById<CardView>(R.id.testCardView)
val textView = itemView.findViewById<TextView>(R.id.testTextView)
}
}
class Fragment1 : Fragment(){
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
public override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?): View? {
val qI: String?
val rootView = inflater.inflate(R.layout.fragment1, container, false)
val item = getArguments()?.getParcelable("ITEM") as Test?
val questionNumber = rootView.findViewById(R.id.questionNumber) as TextView
val questionText = rootView.findViewById(R.id.Question) as TextView
val questionImage = rootView.findViewById(R.id.questionImage) as ImageView
if (!item?.questionImageSrc.isNullOrEmpty()) {
qI = item?.questionImageSrc
Picasso.get().load(qI).into(questionImage)
questionImage.setOnClickListener(){
val context : Context = this.getContext()!!
val intent = Intent(context, OpenImageActivity::class.java)
intent.putExtra("imageResource", qI)
startActivity(intent)
}
}
questionNumber.text=item?.numberQuestion
questionText.text=item?.question
val editText : EditText = rootView.findViewById(R.id.userAnswer)
if (editText.text.toString()!="") {
val userAnswer: String = editText.text.toString()
if (userAnswer.toLowerCase(Locale.getDefault())==item!!.inputAnswer[0].correctAnswer.toLowerCase(Locale.getDefault())){
item?.examination=true
}
else {
item?.examination = false
}
}
return rootView
}
}
class Fragment2 : Fragment() {
public override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
}
public override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
val rootView = inflater.inflate(R.layout.fragment2, container, false)
val item = getArguments()?.getParcelable("ITEM") as Test?
val qI: String?
val questionNumber = rootView.findViewById(R.id.questionNumber) as TextView
val questionText = rootView.findViewById(R.id.Question) as TextView
val questionImage = rootView.findViewById(R.id.questionImage) as ImageView
questionNumber.text = item?.numberQuestion
questionText.text = item?.question
if (!item?.questionImageSrc.isNullOrEmpty()) {
qI = item?.questionImageSrc
Picasso.get().load(qI).into(questionImage)
questionImage.setOnClickListener() {
val context: Context = this.getContext()!!
val intent = Intent(context, OpenImageActivity::class.java)
intent.putExtra("imageResource", qI)
startActivity(intent)
}
}
val radioGroup = rootView.findViewById(R.id.radioGroupSetectTest) as RadioGroup
val count = getArguments()!!.getInt("COUNT_KEY")
val context = getContext()
for (i in 0 until count) {
val curentRB = RadioButton(context)
val curLetter = item!!.singleChoiceAnswers[i].letter
val curText = item.singleChoiceAnswers[i].text
curentRB.setId(i)
curentRB.setText(curLetter + " " + curText)
curentRB.setPadding(0, 30, 0, 30)
radioGroup.addView(curentRB)
}
radioGroup.setOnCheckedChangeListener(
RadioGroup.OnCheckedChangeListener{ radioGroup, i ->
item!!.singleChoiceAnswers[i].checked=true
if (item!!.singleChoiceAnswers[i].checked==item!!.singleChoiceAnswers[i].correctAnswer)
{
item!!.examination=true
}
if (item!!.singleChoiceAnswers[i].checked!=item!!.singleChoiceAnswers[i].correctAnswer)
{
item!!.examination=false
}
}
)
return rootView
}
}