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

Hide and show item when the user click on it using adapter

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

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

现在这是我的适配器:

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

}

我的最后一步是在哪里执行可见性操作?

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

holder.txtQuestionFaq.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        holder.txtAnswerFaq.setVisibility(View.VISIBLE);
    }
});

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

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