ViewHolder:
public class ContactViewHolder extends RecyclerView.ViewHolder {
private final TextView text_name;
private final IContactClick listener;
public ContactViewHolder(View itemView, IContactClick _listener) {
super(itemView);
text_name = (TextView) itemView.findViewById(R.id.text_name);
listener = _listener;
}
public void bind(final Contact model) {
text_name.setText(model.name);
itemView.setOnClickListener(new View.OnClickListener() {
@Override public void onClick(View v) {
listener.contactClick(model);
}
});
}
public interface IContactClick {
void contactClick(Contact contact);
}
}
Adaptar:
public class ContactsAdapter extends RecyclerView.Adapter<ContactViewHolder> implements ContactViewHolder.IContactClick{
private final LayoutInflater mInflater;
private final List<Contact> mModels;
public ContactsAdapter(Context context, List<Contact> models) {
mInflater = LayoutInflater.from(context);
mModels = new ArrayList<>(models);
}
public void contactClick(Contact contact) {
Log.d("contactClick", contact.name);
}
...
私は、コールバック内で使用することができますので、最終的にモデルを変更する必要がありました。これはうまくいくようです。私はこれが良い習慣であるかどうか、動いているのだろうかと思います。
乾杯
は継続全く問題ありません。あなたは内部クラスから評価される最終的な宣言をする必要があります。 –