Ich arbeite an einer Android App. Ich habe ein Problem mit dem Öffnen eines Popup-Menüs, wenn ich in der Recycler-Ansicht auf ein Element klicke.Recycler Ansicht in Android nicht klicken
Show.java (die Aktivität, die die Recycler-Ansicht enthält). mRecycler ist das Objekt, das dem RecyclerView zugeordnet ist.
mRecycler.addOnItemTouchListener(new RecyclerTouchListener(getApplicationContext(), mRecycler, new RecyclerViewClickListener() {
@Override
public void onClick(View view, final int position) {
PopupMenu menu = new PopupMenu(Show.this,mRecycler);
MenuItem itemView = (MenuItem) findViewById(R.id.three);
if(method.equals("Completed"))
itemView.setTitle("Mark as imcomplete");
menu.getMenuInflater().inflate(R.menu.menu_popup,menu.getMenu());
menu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener(){
public boolean onMenuItemClick(MenuItem item){
int id=item.getItemId();
switch (id){
case R.id.one:
Intent intent = new Intent(Show.this,Add.class);
intent.putExtra("Task",tasks.get(position));
startActivity(intent);
finish();
startActivity(getIntent());
break;
case R.id.two:
deleteRecord(position);
break;
case R.id.three:
toggleComplete(position);
}
return true;
}
});
}
@Override
public void onLongClick(View view, int position) {
onClick(view,position);
}
}));
-Code-Snippet für xml von RecyclerView
<android.support.v7.widget.RecyclerView
android:id="@+id/recycler"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_alignParentStart="true"
android:scrollbars="vertical"
android:clickable="true"
android:contextClickable="true"
android:longClickable="true" />
RecyclerViewClickListener.java
public interface RecyclerViewClickListener {
void onClick(View view,int position);
void onLongClick(View view,int position);
}
RecyclerTouchListener.java - Klasse, die die OnItemTouchListener implementiert
public class RecyclerTouchListener implements RecyclerView.OnItemTouchListener{
private GestureDetector gestureDetector;
private RecyclerViewClickListener clickListener;
public RecyclerTouchListener (Context context,final RecyclerView recyclerView,
final RecyclerViewClickListener clickListener){
this.clickListener = clickListener;
gestureDetector = new GestureDetector(context,new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e){
return true;
}
@Override
public void onLongPress(MotionEvent e){
View child = recyclerView.findChildViewUnder(e.getX(),e.getY());
if (child != null && clickListener!=null)
clickListener.onLongClick(child,recyclerView.getChildAdapterPosition(child));
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e){
View child = rv.findChildViewUnder(e.getX(),e.getY());
if (child !=null && clickListener !=null && gestureDetector.onTouchEvent(e))
clickListener.onClick(child,rv.getChildAdapterPosition(child));
return false;
}
@Override
public void onTouchEvent(RecyclerView rv,MotionEvent e){}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntecept){}
}
Noth Das passiert, wenn ich auf einen Gegenstand im RecyclerView klicke. Das Android-System erkennt nicht einmal, dass es angeklickt wurde. Bitte überprüfen Sie, was das Problem mit meinem Code ist.