Ich arbeite mit einem RecyclerView und versuche, OnClick und OnLongClick für jedes Element im RecyclerView festzulegen. Ich entschuldige mich, aber ich glaube nicht, ich wirklich verstehen, was mit dem Code los ist, wurde einige davon Folien für meine Aufgabe und einige Patches für Sachen, die nicht funktionieren würde, dass ich auf dieser Website gefunden. An der Spitze meiner RecyclerView Adapter Klasse hav ich
statische OnItemClickListener mItemClickListener; `Und dann habe ich eine Schnittstelle für meine neue Methoden, um ein Verfahren, meinen clicklistener gesetzt, und dann Umsetzung meines ViewHolder etwa so:Die Methode setOnItemClickListener für RecyclerView kann nicht aufgelöst werden.
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public void setOnItemClickListener(final OnItemClickListener mItemClickListener) {
this.mItemClickListener = mItemClickListener;
}
public static class ViewHolder extends RecyclerView.ViewHolder {
public ImageView movieImage;
public TextView movieName;
public TextView movieDescription;
public CheckBox movieCheckBox;
public CardView cV;
public ViewHolder(View view) {
super(view);
movieImage = (ImageView) view.findViewById(R.id.movieImg);
movieName = (TextView) view.findViewById(R.id.movieName);
movieDescription = (TextView) view.findViewById(R.id.movieDescription);
movieCheckBox = (CheckBox) view.findViewById(R.id.movieCheckBox);
view.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
if (mItemClickListener != null) {
if (getAdapterPosition() != RecyclerView.NO_POSITION) {
mItemClickListener.onItemClick(v, getAdapterPosition());
}
}
}
});
view.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
if (mItemClickListener != null) {
if (getAdapterPosition() != RecyclerView.NO_POSITION) {
mItemClickListener.onItemLongClick(v, getAdapterPosition());
}
}
return true;
}
});
}
}
Meines Das Problem kommt in der Klasse für mein Fragment, das die Recycler-Ansicht besitzt, wo ich versuche, den onitemclicklistener zu setzen.
myAdapter = new MyRecyclerAdapter();
myAdapter.setOnItemClickListener(new MyRecyclerAdapter.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
Log.d("TEST", "onItemClick");
}
@Override
public void onItemLongClick(View view, int position) {
Log.d("TEST", "onItemLongClick");
}
});
Es sagt das Problem mit myAdapter.setOnItemClickListener
ist, sagt es 'Cannot resolve method 'setOnItemClickListener(anonymous com.example.kevin.assignment4.MyRecyclerAdapter.OnItemClickListener)'
Aber ich weiß nicht, warum es das zu sagen ist. Es sollte in der Lage sein, die Methode so gut wie möglich zu finden.
EDIT: Meine Importe für MyRecyclerView Klasse sind wie folgt:
import android.support.v7.widget.CardView;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.CheckBox;
import android.widget.ImageView;
import android.widget.TextView;
import java.util.HashMap;
Warum Sie den Adapter klicken und lange klicken? Sie können auch den Klick und den langen Klick von Recyclerview verwenden. Verwenden Sie diese Option und versuchen Sie es. – dipali
haben Sie die OnItemClickListener-Schnittstelle für das Fragment – Sanjeet
@dipali implementiert Ich muss in der Lage sein zu sagen, welches einzelne Element in der RecyclerView-Liste angeklickt wurde. Ein Teil der Aufgabe besteht darin, verschiedene Dinge mit den Elementen in der Liste zu tun, basierend darauf, ob ich einen normalen Klick oder einen langen Klick gemacht habe. – KevinCamacho