Ich arbeite an RecyclerView
onItemClick
und onItemLongClick
, beide arbeiten gut, aber das Problem ist, dass onItemLongClick
auch onItemClick
nennt.recycleview onLongclick ruft automatisch onClick
Hier ist mein Adapter Code:
package Adaptor;
import android.annotation.SuppressLint;
import android.content.Context;
import android.support.v7.widget.RecyclerView;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.TextView;
import com.wings.example.recycleview.MainActivity;
import com.wings.example.recycleview.R;
import java.util.ArrayList;
public class SampleAdapter extends RecyclerView.Adapter<SampleAdapter.ViewHolder> {
Context context;
private ArrayList<String> arrayList;
private static onClickListner onclicklistner;
public SampleAdapter(Context context) {
this.context = context;
arrayList = MainActivity.arrayList;
}
public class ViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener, View.OnLongClickListener {
TextView txt_pos;
SampleAdapter sampleAdapter;
public ViewHolder(View itemView, SampleAdapter sampleAdapter) {
super(itemView);
itemView.setOnClickListener(this);
itemView.setOnLongClickListener(this);
txt_pos = (TextView) itemView.findViewById(R.id.txt_pos);
this.sampleAdapter = sampleAdapter;
itemView.setOnClickListener(this);
}
@Override
public void onClick(View v) {
onclicklistner.onItemClick(getAdapterPosition(), v);
}
@Override
public boolean onLongClick(View v) {
onclicklistner.onItemLongClick(getAdapterPosition(), v);
return false;
}
}
public void setOnItemClickListener(onClickListner onclicklistner) {
SampleAdapter.onclicklistner = onclicklistner;
}
public interface onClickListner {
void onItemClick(int position, View v);
void onItemLongClick(int position, View v);
}
@Override
public int getItemCount() {
return arrayList.size();
}
@Override
public int getItemViewType(int position) {
return position;
}
@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {
viewHolder.txt_pos.setText(arrayList.get(position));
}
@SuppressLint("InflateParams")
@Override
public ViewHolder onCreateViewHolder(ViewGroup viewGroup, int position) {
View view = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.custom_recycler_row_sample, viewGroup, false);
return new ViewHolder(view, this);
}
}
Und ich es genannt werden:
sampleAdapter.setOnItemClickListener(new SampleAdapter.onClickListner() {
@Override
public void onItemClick(int position, View v) {
Log.e(TAG+"ON ITEM CLICK", position + "");
}
@Override
public void onItemLongClick(int position, View v) {
Log.e(TAG + "ON ITEM LONG CLICK", position + "");
}
});
Und ich habe auch versucht, aber gleiche Problem gibt es: Little robots's onitemclick code
Jede Hilfe würde sehr geschätzt werden.
versuchen 'return true;' statt 'return false;' in 'onLongClick' listner –
Ja, die Danke @AbhishekPatel –
Danke für die Erwähnung @ Mike –