我创建了一些动态文本视图。当用户单击下一步按钮时,我想获取textviews的文本。 我已经编写了在Adapter类中创建EditText的逻辑。 我的活动中有一个按钮,单击该按钮后,我想从我的适配器类中动态创建的文本视图中获取所有文本。
if(input_type=="text")
{
holder.question.text=questionsList!![position].question
val tableRow = TableRow(context)
tableRow.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
var ansEditText = EditText(context)
ansEditText.setPadding(5,5,5,15)
ansEditText.setHint("Answer")
ansEditText.setTextColor(Color.parseColor("#000000"))
ansEditText.textSize= 20F
tableRow.addView(ansEditText)
holder.linearQuestionanire.addView(tableRow)
}
答案 0 :(得分:1)
因此,基本上,您具有类似Question的模型。
一种选择是在该模型中添加字段答案,然后在EditText
onTextChange()
上添加侦听器,然后将更改保存到Question.answer
字段中。
使用这种方法时,您已经映射了问答列表。
我认为Pair<Question, Answer?>
是一个很好的用例
它可能看起来像这样
if (input_type == "text") {
val question = questionsList!![position]
holder.question.text = question.question
val tableRow = TableRow(context)
tableRow.layoutParams = ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT)
var ansEditText = EditText(context)
ansEditText.setPadding(5, 5, 5, 15)
ansEditText.setHint("Answer")
ansEditText.setTextColor(Color.parseColor("#000000"))
ansEditText.textSize = 20F
tableRow.addView(ansEditText)
holder.linearQuestionanire.addView(tableRow)
ansEditText.addTextChangedListener(object : TextWatcher {
override fun afterTextChanged(s: Editable?) {
question.answer = s.toString()
}
override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) {
// Empty
}
override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) {
// Empty
}
})
}
也不要忘记删除TextWatcher
,这样就不会导致内存泄漏
答案 1 :(得分:0)
有多种方法可以解决此问题。
textView.getText()
获取文本。最合适的选择显然取决于您的代码,将来的考虑因素和其他类似条件。