2017-02-03 3 views
-1

Zunächst einmal zu finden, habe ich auf vielen anderen Stellen gesucht und noch keine Lösung für sie gefunden.Android - findViewById Methode in Fragmente ein Element aus einem benutzerdefinierten Layout

MainActivity ist eine Registerkarte Aktivität (2 Registerkarten) und die erste enthält eine ListView. Ein einzelnes Element aus dieser Liste wird aus einer custom_row Layout-Datei gemacht, dass ein ImageView mit id deleteItemImage enthält.

Wie findViewById in Tab1_class zu verwenden, um den Verweis auf das Bild aus einer benutzerdefinierten Layoutdatei zu erhalten, um setOnClickListener(...)?

habe ich schon versucht (auf onCreateView(...) Methode) zu verwenden view.findViewById(...) oder getActivity().findViewById(...) oder getView().findViewById(...) und nichts funktioniert.

Hoffe mir kann jemand helfen !! Vielen Dank im Voraus!!

EDIT:

custom_row.xml

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:padding="10dp"> 

    (...) 
    <ImageView 
     android:id="@+id/deleteItemImage" 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:layout_alignParentEnd="true" 
     android:layout_alignParentRight="true" 
     android:layout_centerVertical="true" 
     android:src="@drawable/icon"/> 

</RelativeLayout> 

Tab1_List.java

(...) 
@Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
          Bundle savedInstanceState) { 
     View rootView = inflater.inflate(R.layout.tab1_list, container, false); 

     (...) 
     //TODO 
     ImageView deleteItemImage = (ImageView) rootView.findViewById(R.id.deleteItemImage); 
     deleteItemImage.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       // ... 
      } 
     }); 

     return rootView; 
    } 
+1

geklickt wird Konnten Bitte posten Sie die XML- und die Java-Datei, in der Sie versuchen, die Ansicht zu finden – Altoyyr

+1

Wo ist Ihr Code? –

+0

Bearbeiten: Code oben. – ng02

Antwort

0

Sie müssen Listener-Schnittstelle für Adapter Artikel erklären. und implementiert TouchListener in Tab1_class.

Ich hoffe Code folgende helfen ...

Ändern Sie bitte Ihre Adapterklasse und ViewHolder, wie

public class MyViewHolder extends RecyclerView.ViewHolder implements View.OnTouchListener{ 

     private ImageView iv_cardImage; 
     public MyViewHolder(View itemView) { 
      super(itemView); 
      iv_cardImage = (ImageView) itemView.findViewById(R.id.iv_cardImage); 
      iv_cardImage.setOnTouchListener(this); 
     } 

     @Override 
     public boolean onTouch(View view, MotionEvent motionEvent) { 
      view.getParent().requestDisallowInterceptTouchEvent(true); 
      switch(motionEvent.getAction()){ 
       case MotionEvent.ACTION_UP: 
        //Toast.makeText(context, "from adapter", Toast.LENGTH_LONG).show(); 
        touchListener.itemTouched(view, getAdapterPosition()); 
        return true; 

      } 
      return false; 
     } 
    } 

    public void setTouchListener(TouchListener touchListener){ 
     this.touchListener = touchListener; 
    } 

eine Schnittstelle erstellen, die aufgerufen wird, wenn Artikel imageview

public interface TouchListener{ 
     void itemTouched(View v, int position); 
    } 
Verwandte Themen