PagerAdapter вызывается дважды - PullRequest
0 голосов
/ 04 февраля 2019

Я делаю это приложение "Edversity" в Android, и я сталкиваюсь с этой ошибкой, которую я не могу решить самостоятельно.Схема довольно проста Это макет действия

, поэтому проблема в том, что метод "instantiateItem ()" вызывается дважды, что создает проблему, так как я вызываю случайныйфункция в этом методе, и он создает разные значения дважды, и он назначает правильное представление при первом вызове, но не обновляет представление в следующий раз.так что помогите мне, парень, а также, пожалуйста, объясните, почему он вызывает класс AnimalTestAdapter дважды.

XML Design

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


<RelativeLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="horizontal"

    android:layout_margin="15dp"
    android:background="@drawable/slide_bg"
    android:elevation="4dp">

    <RelativeLayout
        android:id="@+id/rela1"
        android:layout_width="170dp"
        android:layout_height="170dp"
        android:layout_margin="10dp"
        android:elevation="2dp"
        android:background="@drawable/slide_bg">
        <ImageView
            android:id="@+id/imageanimaa"
            android:layout_width="match_parent"
            android:layout_height="483dp"
            android:src="@mipmap/a_for_apple" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/rela2"
        android:layout_width="170dp"
        android:layout_height="170dp"
        android:layout_margin="10dp"
        android:elevation="2dp"
        android:layout_alignParentRight="true"
        android:background="@drawable/slide_bg">
        <ImageView
            android:id="@+id/imageanimab"
            android:layout_width="match_parent"
            android:layout_height="483dp"
            android:src="@mipmap/b_for_ball" />
    </RelativeLayout>

    <RelativeLayout
        android:id="@+id/rela3"
        android:layout_width="170dp"
        android:layout_height="170dp"
        android:layout_margin="10dp"
        android:elevation="2dp"
        android:layout_below="@+id/rela1"
        android:background="@drawable/slide_bg">
        <ImageView
            android:id="@+id/imageanimac"
            android:layout_width="match_parent"
            android:layout_height="483dp"
            android:src="@mipmap/b_for_ball" />
    </RelativeLayout>
    <RelativeLayout
        android:id="@+id/rela4"
        android:layout_width="170dp"
        android:layout_height="170dp"
        android:layout_margin="10dp"
        android:elevation="2dp"
        android:layout_below="@+id/rela2"
        android:layout_alignParentRight="true"
        android:background="@drawable/slide_bg">
        <ImageView
            android:id="@+id/imageanimad"
            android:layout_width="match_parent"
            android:layout_height="483dp"
            android:src="@mipmap/b_for_ball" />
    </RelativeLayout>
</RelativeLayout>
</RelativeLayout>

AdapterClass

package com.example.akroc.edversity;

import android.content.Context;
import android.support.annotation.NonNull;
import android.support.v4.view.PagerAdapter;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.RelativeLayout;
import java.util.ArrayList;
import java.util.Collections;

public class AnimalTestAdapter extends PagerAdapter {


    Context context;
    LayoutInflater layoutInflater;
    int randIndex;
    public int Answer;
    final String TAG="yowag";

    public AnimalTestAdapter(Context context) {
        this.context = context;
    }

    public int[] slideImages = {
            R.mipmap.idog,
            R.mipmap.icow,
            R.mipmap.ipeacock,
            R.mipmap.a_for_apple

    };

    public String[] slideHead = {

            "dog", "cow", "peacock","hint"
    };
    public int[] animalSound=
            {
                    R.raw.dog,
                    R.raw.cow,
                    R.raw.peacock,
                    R.raw.hint
            };

    @Override
    public int getCount() {
        return slideHead.length;
    }

    public int[] getRandom()
    {
        int[] randomval= new int[4];
        ArrayList<Integer> list = new ArrayList<Integer>();
        for (int i=0; i<slideHead.length; i++) {
            list.add(new Integer(i));
        }
        Collections.shuffle(list);
        for (int i=0; i<4; i++) {
            randomval[i]=list.get(i);
        }
        return  randomval;
    }

    @Override
    public boolean isViewFromObject(@NonNull View view, @NonNull Object object) {
        return view == (RelativeLayout) object;
    }

    @NonNull
    @Override
    public Object instantiateItem(@NonNull ViewGroup container, int position) {

        layoutInflater = (LayoutInflater) context.getSystemService(context.LAYOUT_INFLATER_SERVICE);
        final View view = layoutInflater.inflate(R.layout.anitest_layout, container, false);
        final ImageView img1 = (ImageView) view.findViewById(R.id.imageanimaa);
        final ImageView img2 = (ImageView) view.findViewById(R.id.imageanimab);
        final ImageView img3 = (ImageView) view.findViewById(R.id.imageanimac);
        final ImageView img4 = (ImageView) view.findViewById(R.id.imageanimad);
        int[]temp=getRandom();
        img1.setImageResource(slideImages[temp[0]]);
        img2.setImageResource(slideImages[temp[1]]);
        img3.setImageResource(slideImages[temp[2]]);
        img4.setImageResource(slideImages[temp[3]]);

        randIndex=((int)(Math.random() * 4)); //0
        Answer=temp[randIndex]; //2
        Log.i(TAG,"Randomvalue: "+temp[0]+","+temp[1]+","+temp[2]+","+temp[3]+"Randindex "+randIndex+"Answer "+ Answer);

        container.addView(view);
        return view;
    }

    @Override
    public void destroyItem(@NonNull ViewGroup container, int position, @NonNull Object object) {
        container.removeView((RelativeLayout) object);
    }
}

Logcat

com.example.akroc.edversity I / yowag: случайное значение: 2,0,3,1Randindex 3Ответ 1 com.example.akroc.edversity I / yowag: случайное значение: 3,0,1,2Randindex 2Ответ 1

...