Can we give onItemLongClick,OnClick and OnTouch at a time to RecyclerView?I gave all these three but onTouchListener is only working .if i remove ontouch both itemclick and longitemclick are worrking.if i give onTouch only onTouch is working remaining onClick, can any of u let me know i have to work these three at a time.Please let me know.thanks!!!I saw description here i didn't get solution
Here Is my ListAdapter.java
class ListAdapter extends RecyclerView.Adapter {
private List<String> mList,mList1,mList2,mList3,mList4,mList5;
private Listener mListener;
Context mcontext;
ListAdapter(List<String> list,List<String> list_1,List<String> list_2,List<String> list_3,List<String> list_4,List<String> list_5,Listener listener,Context context)
{
this.mList = list;
this.mList1 = list_1;
this.mList2 = list_2;
this.mList3 = list_3;
this.mList4 = list_4;
this.mList5 = list_5;
this.mListener = listener;
this.mcontext=context;
}
@Override
public ListViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View view = LayoutInflater.from(
parent.getContext()).inflate(R.layout.list_row, parent, false);
return new ListViewHolder(view);
}
@Override
public void onBindViewHolder(final ListViewHolder holder, final int position)
{
holder.text.setText("Destination Is:"+mList.get(position));
holder.text_1.setText("Item Title:"+mList1.get(position));
holder.text_2.setText("Item Date:"+mList2.get(position));
holder.text_3.setText("Item Time:"+mList3.get(position));
holder.text_4.setText("Item Id:"+mList4.get(position));
holder.text_5.setText("Assigned Person:"+mList5.get(position));
holder.frameLayout.setTag(position);
holder.frameLayout.setOnTouchListener(new View.OnTouchListener() {
@Override
public boolean onTouch(View view, MotionEvent motionEvent) {
switch (motionEvent.getAction())
{
case MotionEvent.ACTION_DOWN:
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
view.startDragAndDrop(data, shadowBuilder, view, 0);
} else {
view.startDrag(data, shadowBuilder, view, 0);
}
return true;
}
return false;
}
});
holder.frameLayout.setOnDragListener(new DragListener(mListener));
holder.itemView.setOnClickListener(new View.OnClickListener()
{
@Override
public void onClick(View view)
{
Toast.makeText(mcontext, ""+mList.get(position), Toast.LENGTH_SHORT).show();
mList1.get(position);
mList2.get(position);
mList3.get(position);
mList4.get(position);
mList5.get(position);
}
});
holder.itemView.setOnLongClickListener(new View.OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
Toast.makeText(mcontext, "You Clicked So Much Time Dude", Toast.LENGTH_SHORT).show();
ClipData data = ClipData.newPlainText("", "");
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
view.startDragAndDrop(data, shadowBuilder, view, 0);
} else {
view.startDrag(data, shadowBuilder, view, 0);
}
return true;
}
});
}
DragListener getDragInstance() {
if (mListener != null) {
return new DragListener(mListener);
} else {
Log.e("ListAdapter", "Listener wasn't initialized!");
return null;
}
}
@Override
public int getItemCount() {
return mList.size();
}
List<String> getList()
{
return mList;
}
void updateList(List<String> list) {
mList = list;
}
}