【发布时间】:2020-03-20 20:24:19
【问题描述】:
抱歉,我有一个问题,我已经为 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);
}
【问题讨论】:
-
这能回答你的问题吗? How to add Onclick listener to recycler view
-
“它不起作用”的描述性不足以帮助人们理解您的问题。相反,描述观察到的确切行为是什么以及预期的行为应该是什么。对于 UI 问题,屏幕截图或视频通常会有所帮助。包括任何错误消息的确切措辞(包括任何异常的完整stack trace,如果适用,以及产生它的代码行)。请参阅How to Ask 和How to create a Minimal, Reproducible Example。
-
这不是错误,如果我单击 RecyclerView 的项目,它不会做任何事情,我曾尝试在我的 onTecniciClick 中显示敬酒,但它没有做任何事情,它就像我从来没有碰过这个项目
-
@pazz98 由 oussama-zaoui 回答的答案应该可以解决,如果你可以摆脱你的听众
标签: android listener android-adapter android-recyclerview