【问题标题】:How do I get textviews on button click from a recycleview?如何从回收视图中获取按钮单击时的文本视图?
【发布时间】:2020-12-26 08:19:34
【问题描述】:

我有一个包含 n 条评论的 recycleView。每条评论都有一个昵称、正文和一个button,如果有问题,我有机会报告我的评论。问题是我不知道如何在点击时检索这些信息。有人可以给我看一些代码草稿吗?

【问题讨论】:

    标签: java android android-studio android-recyclerview android-button


    【解决方案1】:

    在您的 RecyclerView 类上覆盖以下内容:

    @Override
    public void onViewAttachedToWindow(@NonNull MyViewHolder holder) {
        super.onViewAttachedToWindow(holder);
    
    //assuming your 'body' is TextView:
    TextView tv = holder.body; //body should have been set in your ViewHolder inner class
    Button button = holder.button; //assume button was defined in your ViewHolder inner class
    
    //now you have a reference to your objects!
    
    }
    

    【讨论】:

      【解决方案2】:

      一个简洁的方法是制作一个界面,这里我举个例子。

      class NewsAdapter(private val noticias: List<Noticia>, private val layout: Int, private val activity: Activity, private val listener: OnItemClickListener) : RecyclerView.Adapter<NewsAdapter.ViewHolder>() {
      override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder {
          
          val view = LayoutInflater.from(parent.context).inflate(layout, parent, false)
          return ViewHolder(view)
      }
      
      override fun onBindViewHolder(holder: ViewHolder, position: Int) {
          holder.bind(noticias[position], listener)
      }
      
      override fun getItemCount() = noticias.size
      
      // ViewHolder
      inner class ViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
      
          
          fun bind(noticia: Noticia, listener: OnItemClickListener) {
              itemView.textViewNewsTitulo.text = noticia.titulo
              Glide.with(activity)
                      .load(noticia.foto_url)
                      .fitCenter()
                      .placeholder(R.drawable.placeholder)
                      .into(itemView.imageViewNews)
              itemView.textViewNewsDesc.text = noticia.desc
      
              // bind the click listener with the itemView
              itemView.setOnClickListener { listener.onItemClick(noticia, adapterPosition) }
          }
      }
      
      // Interface onClick define in adapter adapter
      interface OnItemClickListener {
          fun onItemClick(noticia: Noticia?, posicion: Int)
      } 
      }
      

      要在您的活动中使用,您需要实现这样的接口。

      class HomeActivity : BaseActivity(), NewsAdapter.OnItemClickListener
      

      接口强制你实现活动中的方法。

      override fun onItemClick(noticia: Noticia?, posicion: Int) {
              // do your logic on click 
          }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-09-11
        • 1970-01-01
        相关资源
        最近更新 更多