2016-10-06 2 views
3

Я хочу setOnClickListener моему ImageView который находится в ViewPagerItemXML.OnclickAction от ViewPager Элемент макета

У меня activityXML У меня есть ViewPager и несколько других кнопок. В моем ViewPagerItemXML у меня есть clickable 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!"); 
    }); 

EDIT

Моя активность 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

Я не понимаю, изображениеView устанавливается в другом макете. Я должен реализовать одно и то же изображение View в макете активности в части viewPager? – Expiredmind

+0

См. Мой отредактированный ответ..thanks –

0

делают ImageView как окончательное

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

с помощью конечно вы можете нажать вид, который вы хотите нажать

+0

еще не работает – Expiredmind

2

Это нормально, что вид запускается в адаптере, а не в аквитивности.

Иерархия, которая накачивается в вашей деятельности, содержит только ViewPager, который содержит различные элементы ViewPagerIt с помощью адаптера.

Идея состоит в том, что вам необходимо передать это событие щелчка в действие. Для этого создайте обратный вызов интерфейса, попросите его реализовать его и вызовите этот обратный вызов из вашего адаптера.

Многие вопросы по SO помогут вам. Call Activity method from adapter

Смежные вопросы