2016-10-06 101 views
3

我想setOnClickListener我的ImageView這是在ViewPagerItemXML從ViewPager OnclickAction項目佈局

在我activityXML我有ViewPager和其他幾個按鈕。在我的ViewPagerItemXML我可點擊ImageView。我想在活動中點擊ImageView之後做出一些操作。不幸的是OnClickListener根本沒有觸發。

LayoutInflater inflater = (LayoutInflater) this 
       .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
itemView = inflater.inflate(R.layout.viewPager_item, null); 

onThemePhotoClick= (ImageView)itemView.findViewById(R.id.themePhoto); 
onThemePhotoClick.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View v) { 
      Log.i(TAG,"clickOnPhoto!"); 
    }); 

編輯

我的動態XML

LinearLayout 
     xmlns:android="http://schemas.android.com/apk/res/android" 
     xmlns:tools="http://schemas.android.com/tools" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
    android:orientation="vertical" 
     android:weightSum="10"> 
    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     android:id="@+id/iconTools"> 

     <ImageButton 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:src="@drawable/ic_navigate_before_black_36dp" 
      android:background="@android:color/transparent" 
      android:id="@+id/backButton" 
      /> 
    </LinearLayout> 

    <LinearLayout 

     android:layout_width="match_parent" 
     android:orientation="horizontal" 
     android:layout_height="0dp" 
     android:layout_weight="8" 
     android:id="@+id/viewPagerLayout"> 

     <android.support.v4.view.ViewPager 
     android:id="@+id/visitMuseumPager" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     tools:listitem="@layout/art_work_item" /> 
</LinearLayout> 

    <LinearLayout 
     android:layout_width="match_parent" 
     android:layout_height="0dp" 
     android:layout_weight="1" 
     android:orientation="vertical" 
     android:id="@+id/bottomButtonToolbar"> 
    <Button 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/qrScannerButton" 
     android:text="QrCode" /> 
</LinearLayout> 

    </LinearLayout> 

而且viewPagerItem

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 
    <ScrollView 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical" 
     android:fillViewport="true"> 
<LinearLayout 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:paddingTop="10dp"> 

     <RelativeLayout 
      android:layout_width="match_parent" 
      android:layout_height="200dp"> 
     <ImageView 
      android:layout_width="match_parent" 
      android:layout_height="match_parent" 
      android:background="@color/WelcomeScreenDarker" 
      android:id="@+id/imageBackground" 
      /> 

      <ImageView 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content" 
       android:layout_centerInParent="true" 
       android:id="@+id/themePhoto" 
       android:clickable="true" 
       /> 
     </RelativeLayout> 

    <TextView 
     android:layout_width="wrap_content" 
     android:layout_height="wrap_content" 
     android:id="@+id/artWorkCounter" 
     android:textColor="@color/searchHint" 
     android:textSize="12sp" 
     android:layout_marginRight="80dp" 
     android:layout_gravity="end" /> 

     <TextView 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/artWorkDescriptionTitle" 
      android:paddingTop="15dp" 
      android:textSize="20sp" 
      android:textStyle="bold" 
      android:layout_margin="10dp"/> 

     <TextView 

      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:id="@+id/artWorkDescription" 
      android:layout_margin="10dp" 
      /> 
    </LinearLayout> 
</ScrollView> 
    </LinearLayout> 

EDIT 2 我加入OnClickListener到viewpagerAdapterClass解決我的問題。它可能觸發另一種觀點。如果有人知道如何觸發按鈕的實際活動課,請給我一個提示

+0

可能是盜取點擊的另一個視圖。查看您的ViewPagerXml可能會有所幫助 – JDenais

回答

0

你可以嘗試這改變了你的活動..

<ImageView 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      android:layout_centerInParent="true" 
      android:id="@+id/themePhoto" /> 

,並在類..

onThemePhotoClick=(ImageView)itemView.findViewById(R.id.themePhoto); 

onThemePhotoClick.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      Toast.makeText(context, "You click " + position, Toast.LENGTH_LONG).show(); 
     } 
    }); 
+0

您必須在添加之前定義您的點擊偵聽器。它不會像這樣編譯。 – JDenais

+0

我不明白,imageView設置在另一個佈局。我應該在viewPager部分的activity佈局中實現相同的圖像View? – Expiredmind

+0

請參閱我編輯的答案..謝謝 –

0

化妝的ImageView與使用最終可以點擊查看要單擊最終

final ImageView onThemePhotoClick= (ImageView)itemView.findViewById(R.id.themePhoto); 
+0

仍然不工作 – Expiredmind

2

視圖在適配器中觸發而不是觸發是正常的。

在您的活動中獲取充值的層次結構僅包含ViewPager,其中包含不同ViewPagerItems並藉助適配器。

這個想法是,您需要將該點擊事件傳遞迴活動。要做到這一點,請創建一個接口回調,讓您的活動實施它,並從您的適配器調用回調。

關於SO的許多問題將幫助您。 Call Activity method from adapter