android - 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 中的其他元素怎么样,因为我需要记住用户选择的内容。
解决方案
ArrayAdapter
显示toString()
项目的价值。
因此,覆盖toString()
并Answer
仅返回您要显示的值。
推荐阅读
- python - 如何通过仅选择每小时的最后一行来过滤数据框?
- reactjs - React/Jest/Enzyme 如何模拟组件中服务的 API 调用?
- swift - 自从更新到 swift 5 后关闭工作表
- python - 当 na 在 pandas 列中时如何重置 cumprod
- docker - 扩展 CouchDB Docker 镜像
- bootstrap-4 - 如何使引导 4 表在整个行中保持宽度?
- python - 无法使用 [OpenCV] cv2.VideoCapture.set() 设置帧宽度和高度
- python-3.x - 尝试使用 Win32com.client.Dispatch() 使用 ProgID "QBXMLRP2Lib.RequestProcessor2" 连接到 Quickbooks 时出现错误
- unit-testing - 排序不是函数;spyOn 不嘲笑
- php - PDO::FETCH_ASSOC 只返回整数的第一位