Я хочу реализовать галерею изображений с помощью View Pager с нижним колонтитулом stati c. В нижнем колонтитуле у меня есть 3 кнопки скачать, поделиться и избранное - PullRequest
0 голосов
/ 04 марта 2020

Теперь проблема в том, что когда мне нравится первое изображение, на оставшихся изображениях также отображается значок красного сердца и наоборот ... Может ли какой-либо орган помочь мне, как изменить значок в нижнем колонтитуле, проведя пальцем по изображению?

Нажав на избранную кнопку ivFavImage, вызывается следующий слушатель

        if (databaseHandler.checkData(DatabaseModel(stringPaths[vpSingleItem.currentItem]))) {

            ivFavImage.setImageResource(R.drawable.ic_favorite_red)

        } else if (!databaseHandler.checkData(DatabaseModel(stringPaths[vpSingleItem.currentItem]))){

            ivFavImage.setImageResource(R.drawable.ic_favorite_white)

        }

        ivFavImage.setOnClickListener {
            if (!databaseHandler.checkData(DatabaseModel(stringPaths[vpSingleItem.currentItem]))) {
                databaseHandler.insertData(DatabaseModel(stringPaths[vpSingleItem.currentItem]))
                ivFavImage.setImageResource(R.drawable.ic_favorite_red)
                Toast.makeText(context, "Image added to Favorite Designs", Toast.LENGTH_SHORT)
                    .show()
            } else if (databaseHandler.checkData(DatabaseModel(stringPaths[vpSingleItem.currentItem]))) {
                databaseHandler.deleteImage(DatabaseModel(stringPaths[vpSingleItem.currentItem]))
                ivFavImage.setImageResource(R.drawable.ic_favorite_white)
                Toast.makeText(context, "Image removed from Favorite Designs", Toast.LENGTH_SHORT)
                    .show()
            }
        }

Я объявил макет как

<LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:layout_centerInParent="true"
        android:orientation="vertical"
        android:weightSum="1">

        <androidx.viewpager.widget.ViewPager
            android:id="@+id/vpSingleItem"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.9" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="0.1"
            android:background="@color/colorPrimaryDark">

            <ImageView
                android:id="@+id/ivDownloadImage"
                android:layout_width="30dp"
                android:layout_height="match_parent"
                android:layout_alignParentStart="true"
                android:layout_centerVertical="true"
                android:layout_marginStart="10dp"
                android:src="@drawable/download_white" />

            <ImageView
                android:id="@+id/ivFavImage"
                android:layout_width="30dp"
                android:layout_height="match_parent"
                android:layout_centerHorizontal="true"
                android:layout_centerVertical="true"
                android:src="@drawable/ic_favorite_white" />

            <ImageView
                android:id="@+id/ivShareImage"
                android:layout_width="30dp"
                android:layout_height="match_parent"
                android:layout_alignParentEnd="true"
                android:layout_centerVertical="true"
                android:layout_marginEnd="10dp"
                android:src="@drawable/share_icon" />

        </RelativeLayout>

    </LinearLayout>

1 Ответ

0 голосов
/ 04 марта 2020

изменить состояние значка в viewPager.setOnPageChangeListener()

получить состояние значка из вашей модели и изменить нижний колонтитул в зависимости от текущей позиции viewPager

...