뷰어를 이미지 선택기로 설정하여 내 앱 배경을 변경했습니다. 현재 3 개의 이미지로 테스트 중입니다. 첫 번째 및 두 번째 뷰 페이지가 올바른 배경을 설정하지만 세 번째 이미지는 두 번째 이미지를 배경으로 설정합니다. 어떤 위치가 호출되는지보기 위해 로그를 삽입했습니다. 읽어야합니다 : "1", "2", "3". 하지만 대신 "1" "2" "2"가 표시됩니다. 마지막 페이지를 올바른 위치에 표시하려면 어떻게합니까?ViewPager가 올바른 위치를 반환하지 않는 이유는 무엇입니까?
여기 pageradapter 클래스가 있습니다.
import android.content.Context;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.ImageView;
public class BackgroundChangerAdapter extends PagerAdapter {
private Context context;
private int[] images;
private int mPosition;
BackgroundChangerAdapter(Context context, int[] images) {
this.context = context;
this.images = images;
}
@Override
public int getCount() {
return 3;
}
@Override
public boolean isViewFromObject(View view, Object object) {
return view == ((ImageView) object);
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
mPosition = position;
ImageView imageView = new ImageView(context);
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setImageResource(images[mPosition + 1]);
imageView.setClickable(true);
imageView.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Log.d(MyActivity, "setBackground - position = " + mPosition);
((BackgroundChangerActivity) context).setDrawable(images[mPosition]);
((BackgroundChangerActivity) context).finish();
}
});
((ViewPager) container).addView(imageView, 0);
return imageView;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
((ViewPager) container).removeView((ImageView) object);
}
}
imageView.setTag (int)는 옵션이 아닙니다. 나는 (Object 태그) 또는 (int key, Object 태그) 중 하나입니다. 그리고 어느 쪽도 태그 '위치'를 허용하지 않습니다 – Psest328
오 예 .. 내가 사용 setTag (새 정수 (위치)) 및 int position = (정수) v.getTag(); – dangVarmit
그랬어! 고맙습니다! – Psest328