首页 > 解决方案 > Android ArrayAdapter 从 Class 获取特定元素

问题描述

我尝试在 Kotlin 中为 Android 编写一个测验应用程序。我从 API 获取所有数据并创建数据类

测验

    data class Quiz(
    val answerIds: List<Any>,
    val groupCodes: List<Any>,
    val questionList: List<Question>
)

问题

    data class Question(
    val answers: List<Answer>,
    val groupCode: String,
    val hasSimilarQuestions: Boolean,
    val id: Int,
    val text: String
)

回答

data class Answer(
    val addsGroupCodes: List<String>,
    val id: Int,
    val questionId: Int,
    val text: String
)

我使用 Volley 发出 http 请求

我的问题是:我尝试在 ListView 中仅显示特定问题的答案中的文本。我创建了 ArrayAdapter 但我不能只显示某些答案的文本

    class MainActivity : AppCompatActivity()
{
    override fun onCreate(savedInstanceState: Bundle?)
    {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val url = ""
        showQuiz(url);
    }

    private fun showQuiz(url:String)
    {
        val requestQueue = Volley.newRequestQueue(this)

        val pytanie : TextView = findViewById(R.id.pytanie)

        val jsonObjectRequest = JsonObjectRequest(Request.Method.GET, url, null, object : Response.Listener<JSONObject?>
        {
            override fun onResponse(response: JSONObject?) {
                try
                {
                    val jsonArray = response?.getJSONArray("questionList")
                    if (jsonArray != null)
                    {
                        val quiz:Quiz = Gson().fromJson(response.toString(), Quiz::class.java)
                        val odp = findViewById<ListView>(R.id.odpowiedzi) 

                        for (question in quiz.questionList)
                        {
                            val arrayAdapter: ArrayAdapter<Answer> = ArrayAdapter(this@MainActivity, android.R.layout.simple_list_item_1, question.answers)
                            odp.adapter = arrayAdapter
                        }
                    }
                } catch (e: JSONException) {
                    e.printStackTrace()
                }
            }

        },
                object : Response.ErrorListener
                {
                     override fun onErrorResponse(error: VolleyError)
            {
                error.printStackTrace()
                Log.d("JsonObjectErr",error.toString());
            }
        }
        )
        requestQueue.add(jsonObjectRequest)
    }
}

访问 ArrayAdapter 中的其他元素怎么样,因为我需要记住用户选择的内容。

标签: androidkotlinandroid-arrayadapter

解决方案


ArrayAdapter显示toString()项目的价值。

因此,覆盖toString()Answer仅返回您要显示的值。


推荐阅读