Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用recyclerView和碎片进行测试的申请_Android_Kotlin - Fatal编程技术网

Android 使用recyclerView和碎片进行测试的申请

Android 使用recyclerView和碎片进行测试的申请,android,kotlin,Android,Kotlin,你好)我是Android开发的新手。我必须创建一个通过测试的应用程序。我做的测试就是这样的。有三种类型的问题:输入、符号选择和多选。 我随机抽取10个问题,并将它们放入回收视图。当我按下按钮RecyclerView scroll并滚动到最后一个项目时,测试将完成 这是我的班级: @Parcelize class Test (var id: Int, var numberQuestion: String, var que

你好)我是Android开发的新手。我必须创建一个通过测试的应用程序。我做的测试就是这样的。有三种类型的问题:输入、符号选择和多选。 我随机抽取10个问题,并将它们放入回收视图。当我按下按钮RecyclerView scroll并滚动到最后一个项目时,测试将完成

这是我的班级:

@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
    }

}