Android 当用户使用适配器单击项目时隐藏并显示该项目

Android 当用户使用适配器单击项目时隐藏并显示该项目,android,android-recyclerview,kotlin,adapter,Android,Android Recyclerview,Kotlin,Adapter,我的清单是关于问题和答案的 我设计了一个包含问题和答案的项目,我计划在用户单击该问题时隐藏和显示答案,而不是整个项目(消失/可见)。所以它更像是一种可扩展的方式 现在这是我的适配器: class FaqExpandableAdapter internal constructor(private val context: Context, private var items: List<Faq>,private val callBack: AdapterCallBack?) : Rec

我的清单是关于问题和答案的

我设计了一个包含问题和答案的项目,我计划在用户单击该问题时隐藏和显示答案,而不是整个项目(消失/可见)。所以它更像是一种可扩展的方式

现在这是我的适配器:

class FaqExpandableAdapter internal constructor(private val context: Context, private var items: List<Faq>,private val callBack: AdapterCallBack?) : RecyclerView.Adapter<FaqExpandableAdapter.MyViewHolder>() {

    private val inflater: LayoutInflater = LayoutInflater.from(context)


    override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): MyViewHolder {
        val view = inflater.inflate(R.layout.item_question_faq, parent, false)
        return MyViewHolder(view)
    }


    override fun onBindViewHolder(holder: MyViewHolder, position: Int) {
        holder.txtQuestionFaq.text = items[position].question?.toString() ?: "-"
        holder.txtAnswerFaq.text = items[position].answer?.toString() ?: "-"
    }


    override fun getItemCount(): Int {
        return items.size
    }

    fun update(items: List<Faq>) {
        this.items = items
        notifyDataSetChanged()
    }

    inner class MyViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
        @BindView(R.id.txtQuestionFaq)
        lateinit var txtQuestionFaq: AppCompatTextView
        @BindView(R.id.txtAnswerFaq)
        lateinit var txtAnswerFaq: AppCompatTextView

        init {
            ButterKnife.bind(this, itemView)
        }


        @OnClick(R.id.relativeRowFaq)
        fun onItemClicked() {
            callBack?.onItemClicked(adapterPosition)
        }

    }


    interface AdapterCallBack {
        fun onItemClicked(position: Int)
    }

}
class FaqExpandableAdapter内部构造函数(private-val-context:context,private-var-items:List,private-val-callBack:AdapterCallBack?:RecyclerView.Adapter(){
私有val充气器:LayoutInflater=LayoutInflater.from(上下文)
重写CreateViewHolder(父级:ViewGroup,viewType:Int):MyViewHolder{
val视图=充气机。充气(R.layout.item\u question\u faq,父项,false)
返回MyViewHolder(视图)
}
覆盖onBindViewHolder(holder:MyViewHolder,位置:Int){
holder.txtQuestionFaq.text=项目[位置].question?.toString()?:“-”
holder.txtAnswerFaq.text=项目[位置]。答案?.toString()?:“-”
}
重写getItemCount():Int{
返回项目。大小
}
趣味更新(项目:列表){
this.items=项目
notifyDataSetChanged()
}
内部类MyViewHolder(itemView:View):RecyclerView.ViewHolder(itemView){
@BindView(R.id.txtQuestionFaq)
lateinit var txtQuestionFaq:AppCompatTextView
@BindView(R.id.TXTranswerFAQ)
lateinit var txTranswerFAQ:AppCompatTextView
初始化{
ButterKnife.bind(此,itemView)
}
@OnClick(R.id.relativeRowFaq)
有趣的事{
回调?.onitemclick(适配器位置)
}
}
接口适配器回调{
已单击(位置:Int)
}
}
我的最后一步是在何处执行可见性操作?

onBindViewHolder()
方法中,添加以下行:(我使用Java)

onBindViewHolder()
方法中,添加以下行:(我使用Java)


Kotlin:在onBindViewHolder函数上编写onClick方法

holder.txtQuestionFaq.setOnClickListener {
        holder.txtAnswerFaq.visibility = View.VISIBLE;
    }

Kotlin:在onBindViewHolder函数上编写onClick方法

holder.txtQuestionFaq.setOnClickListener {
        holder.txtAnswerFaq.visibility = View.VISIBLE;
    }