【问题标题】:How to add OnClickListener in recyclerView according to the item positionrecyclerView如何根据item位置添加OnClickListener
【发布时间】:2019-09-24 16:13:58
【问题描述】:

回收商查看代码:OnClickListener

package com.example.cardview;

    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.TextView;
    import android.widget.Toast;

    import androidx.annotation.NonNull;
    import androidx.recyclerview.widget.RecyclerView;


public class ArrayAdapter extends RecyclerView.Adapter<ArrayAdapter.ViewHolder> {
private String[] divisionName;
ArrayAdapter(String[] phoneNumebr) {
    this.divisionName = phoneNumebr;
}

@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
    Context context = parent.getContext();
    LayoutInflater inflater = LayoutInflater.from( context );
    View v = inflater.inflate( R.layout.element, parent, false );
    return new ViewHolder( v );
}

@Override
public void onBindViewHolder(@NonNull ViewHolder holder, final int position) {
    holder.cNumbers.setText(divisionName[position] );
    holder.itemView.setOnClickListener( new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Toast.makeText(this,divisionName[position],Toast.LENGTH_LONG).show();
        }
    } );

}

@Override
public int getItemCount() {
    return divisionName.length;
}

static class ViewHolder extends RecyclerView.ViewHolder{
    TextView cNumbers;

    ViewHolder(@NonNull View itemView) {
        super( itemView );
        this.cNumbers = itemView.findViewById( R.id.cNumbers );
    }

如何根据item位置在recyclerView中添加OnClickListener

【问题讨论】:

  • 您的代码是正确的,那么您的问题是什么。
  • 在 Toast.makeText(this,divisionName[position],Toast.LENGTH_LONG).show(); divisionNmae[position] 产生错误。
  • 你能发布你的日志/错误
  • 内部 Toast.makeText(getApplicationContext... 而不是这个

标签: java android android-recyclerview onclicklistener


【解决方案1】:

如何根据item在recyclerView中添加OnClickListener 位置

要将 OnClickListener 添加到 RecyclerView 项目,您可以在自定义 RecyclerView.ViewHolder 类中实现这一点,方法是将 .onClickListener() 设置为传递给 ViewHolder 构造函数的视图

您的代码中的 sn-p:

static class ViewHolder extends RecyclerView.ViewHolder{
    TextView cNumbers;

    ViewHolder(@NonNull View itemView) {
        super( itemView );
        this.cNumbers = itemView.findViewById( R.id.cNumbers );
        
        listItem.setOnClickListener(){
            @Override
            public void onClick(View v) {
                Toast.makeText(v.getContext(), "Click on position number: " + getAdapterPosition(), Toast.LENGTH_SHORT).show();
                Toast.makeText(v.getContext(), divisionName[getAdapterPosition()],Toast.LENGTH_LONG).show(); 
            }
        }
    }
}

【讨论】:

    【解决方案2】:

    只需更换吐司。

            Toast.makeText(holder.itemView.getContext(),"You clicked "+divisionName[position],Toast.LENGTH_SHORT).show();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-05-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多