Android 如何解决RecyclerView和OnClickAdapter的问题?

Android 如何解决RecyclerView和OnClickAdapter的问题?,android,listener,android-adapter,android-recyclerview,Android,Listener,Android Adapter,Android Recyclerview,对不起,我有一个问题,我已经创建了一个广告适配器,让一个recyclerView点击我的一个项目,但它不工作,这是非常令人沮丧的,你有什么想法吗? 我在一个旧的应用程序中使用过它,它工作正常,但现在我不知道为什么它不工作。。。 这是我的适配器: public class TecniciAdapter extends RecyclerView.Adapter<TecniciAdapter.MyViewHolder> { private Context mContext; privat

对不起,我有一个问题,我已经创建了一个广告适配器,让一个recyclerView点击我的一个项目,但它不工作,这是非常令人沮丧的,你有什么想法吗? 我在一个旧的应用程序中使用过它,它工作正常,但现在我不知道为什么它不工作。。。 这是我的适配器:

public class TecniciAdapter extends RecyclerView.Adapter<TecniciAdapter.MyViewHolder> {

private Context mContext;
private List<Utenti> tecniciList;
private OnTecniciListner onTecniciListner;

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener{
    public TextView nome;
    public TextView cognome;
    public TextView stato;
    public OnTecniciListner onTecniciListner;


    public MyViewHolder(View view, OnTecniciListner onTecniciListner) {
        super(view);
        nome = view.findViewById(R.id.textNome);
        cognome = view.findViewById(R.id.textCognome);
        stato = view.findViewById(R.id.textCurrentState);
        this.onTecniciListner = onTecniciListner;
        view.setOnClickListener(this);
    }

    @Override
    public void onClick(View v) {
        onTecniciListner.onTecniciClick(getAdapterPosition());
    }
}

public TecniciAdapter(Context context, ArrayList<Utenti> list, OnTecniciListner onTecniciListner) {
    this.mContext = context;
    this.tecniciList = list;
    this.onTecniciListner = onTecniciListner;
}

@NonNull
@Override
public TecniciAdapter.MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    View view = LayoutInflater.from(mContext)
            .inflate(R.layout.technician_item, viewGroup, false);

    return new TecniciAdapter.MyViewHolder(view, onTecniciListner);
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    myViewHolder.nome.setText(tecniciList.get(i).getNome());
    myViewHolder.cognome.setText(tecniciList.get(i).getCognome());
    myViewHolder.stato.setText(tecniciList.get(i).getStato());
}

@Override
public int getItemCount() {
    return tecniciList.size();
}

public interface OnTecniciListner{
    void onTecniciClick(int position);
}
我的片段中也有这样的内容:

TecniciAdapter adapter = new TecniciAdapter(getActivity(), tecniciList, TecniciFragment.this);
                RecyclerView.LayoutManager mLayoutManager = new LinearLayoutManager(getActivity());
                recyclerView.setLayoutManager(mLayoutManager);
                recyclerView.setAdapter(adapter);
    @Override
public void onTecniciClick(int position) {
    Utenti tecnici = tecniciList.get(position);
    Intent intent = new Intent(getActivity(), LoginActivity.class);
    startActivity(intent);
}

您不需要在
ViewHolder
类中创建
OnTecniciListner
的实例,
TecniciAdapter
中的实例应该可以正常工作

因此,您的
MyViewHolder
类应该如下所示

公共类MyViewHolder扩展了RecyclerView.ViewHolder实现了View.OnClickListener{
公共文本视图nome;
公共文本视图cognome;
公共文本视图stato;
公共MyViewHolder(视图){
超级(视图);
nome=view.findviewbyd(R.id.textNome);
cognome=view.findviewbyd(R.id.textCognome);
stato=view.findviewbyd(R.id.textCurrentState);
view.setOnClickListener(这个);
}
@凌驾
公共void onClick(视图v){
onTecniciListner.ontecniclick(getAdapterPosition());
}
}

onBindViewHolder
中尝试以下操作:

myViewHolder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

        }
    });

这回答了你的问题吗?“它不起作用”不足以帮助人们理解你的问题。相反,描述确切观察到的行为是什么以及预期的行为应该是什么。对于UI问题,屏幕截图或视频通常很有用。包括任何错误消息的确切措辞(包括所有异常,如果适用,以及产生异常的代码行)。请看和。这不是一个错误,如果我点击RecyclerView的项目,它不会做任何事情,我曾尝试在我的OnTecniclick中显示一个祝酒词,但它不会做任何事情,就像我从未触摸过item@pazz98oussama zaoui的回答应该有效,如果你愿意摆脱你的听众谢谢,但它无论如何都不起作用,似乎我从来没有用这个碰过任何东西