Ich stelle eine Schaltfläche in RecyclerView, wo ich es klicken Toast zeigt "RecyclerViewOnClick" nicht "Button in RecyclerView".Schaltfläche innerhalb RecyclerView klicken Sie auf unnormal
Wenn ich "Button in RecyclerView" anzeigen möchte, muss ich auf den Button longClick klicken.
Wie kann ich den Knopf innerhalb recyclerView onClick klicken, und es wird „Knopf im Inneren RecyclerView“ nicht „RecyclerViewOnClick“?
Jede Hilfe würde sehr geschätzt werden.
Ich benutze recyclerView Click-Modell wie folgt aus:
public class RecyclerViewClickListener implements RecyclerView.OnItemTouchListener {
private GestureDetector mGestureDetector;
private OnItemClickListener mListener;
public interface OnItemClickListener {
void onItemClick(View view, int position);
void onItemLongClick(View view, int position);
}
public RecyclerViewClickListener(Context context, final RecyclerView recyclerView, OnItemClickListener listener){
mListener = listener;
mGestureDetector = new GestureDetector(context,
new GestureDetector.SimpleOnGestureListener(){
@Override
public boolean onSingleTapUp(MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(),e.getY());
if(childView != null && mListener != null){
mListener.onItemClick(childView,recyclerView.getChildLayoutPosition(childView));
return true;
}
return false;
}
@Override
public void onLongPress(MotionEvent e) {
View childView = recyclerView.findChildViewUnder(e.getX(),e.getY());
if(childView != null && mListener != null){
mListener.onItemLongClick(childView,recyclerView.getChildLayoutPosition(childView));
}
}
});
}
@Override
public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {
if(mGestureDetector.onTouchEvent(e)){
return true;
}else
return false;
}
@Override
public void onTouchEvent(RecyclerView rv, MotionEvent e) {
}
@Override
public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {
}
}
Meine Taste innerhalb recyclerView onClick Funktion unter MyAdapter ist erweitert RecyclerView.Adapter:
public class MyViewHolder extends RecyclerView.ViewHolder{
private Button creditCardPayment;
public MyViewHolder(View itemView) {
super(itemView);
creditCardPayment=(Button)itemView.findViewById(R.id.creditCardPayment);
//I want to show this toast when i onClick button.
creditCardPayment.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
Toast.makeText(view.getContext(),"Button inside RecyclerView",Toast.LENGTH_SHORT).show();
}
});
}
Es ist mein Fragment recyclerView Click-Modell erklären:
@Override
public void onActivityCreated(@Nullable Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
recyclerView.addOnItemTouchListener(new RecyclerViewClickListener(getActivity(),recyclerView, new RecyclerViewClickListener.OnItemClickListener() {
@Override
public void onItemClick(View view, int position) {
//When i click the button , the toast show "RecyclerViewOnClick" not "Button //inside recyclerView"
Toast.makeText(getActivity(),"RecyclerViewOnClick",Toast.LENGTH_SHORT).show();
}
@Override
public void onItemLongClick(View view, int position) {
}
}));
}
Es ist mein RecyclerView-Layout, ich setze einen Knopf:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="?android:attr/selectableItemBackground"
android:clickable="true"
android:orientation="horizontal">
<LinearLayout
android:layout_weight="1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="vertical"
android:padding="10dp">
<TextView
android:id="@+id/paymentStatus"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:layout_marginTop="8dp"
android:text="@string/paymentStatus"
android:textColor="@android:color/black"
android:textSize="18dp" />
//onClick over here
<Button
android:id="@+id/creditCardPayment"
android:layout_width="80dp"
android:layout_height="30dp"
android:layout_alignParentRight="true"
android:layout_gravity="center"
android:background="@drawable/corner_light_dark_blue"
android:text="@string/creditCardPayment"
android:textColor="@android:color/white" />
</LinearLayout>
</RelativeLayout>
Nicht sicher, was das Problem ist. Wenn Sie wissen, woher der Toast angerufen wird, geben Sie einfach den Code ein, den Sie benötigen. – HaydenKai
überprüfen Sie dieses Beispiel http://www.truiton.com/2015/02/android-recyclerview-tutorial/ –
Danke für die Antwort, kann ich den Layout-Code gesetzt kann Sie verstehen, mein Problem, ich habe es aktualisiert. –