Android ViewPager Удалить текущую страницу и перейти к следующей
В ViewPager, когда пользователь нажимает кнопку удаления, я пытаюсь удалить текущую страницу и перейти на следующую страницу. Когда я пытаюсь описать код ниже, он переходит на следующую страницу, но удаляет последнюю страницу. Пожалуйста, помогите мне.
@Override
public Object instantiateItem(ViewGroup container, final int IdxVal)
{
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
ImageView imageView = new ImageView(context);
imageView.setLayoutParams(new LinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.MATCH_PARENT));
Glide.with(context)
.load(imageListAryVar.get(IdxVal))
.fitCenter()
.into(imageView);
linearLayout.addView(imageView);
container.addView(linearLayout);
return linearLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
container.removeView((LinearLayout) object);
}
void delCurrentPageFnc()
{
int delIdxVar = viewPager.getCurrentItem();
if(imageListAryVar.size() > 1)
{
if (delIdxVar == imageListAryVar.size() - 1)
viewPager.setCurrentItem(delIdxVar - 1);
else
viewPager.setCurrentItem(delIdxVar + 1);
imageListAryVar.remove(delIdxVar);
notifyDataSetChanged();
}
else finish();
}
1 ответ
Решение
После нескольких попыток я решил эту проблему, добавив getItemPosition и установив return POSITION_NONE;
Если вы не добавляете это notifyDataSetChanged(); метод не сработает.
@Override
public int getItemPosition(Object object)
{
return POSITION_NONE;
}
void delCurrentPageFnc()
{
int delIdxVar = viewPager.getCurrentItem();
if(imageListAryVar.size() > 1)
{
imageListAryVar.remove(delIdxVar);
notifyDataSetChanged();
}
else finish();
}
это было ненужным после установки getItemPosition, поэтому удалены
if (delIdxVar == imageListAryVar.size() - 1)
viewPager.setCurrentItem(delIdxVar - 1);
else
viewPager.setCurrentItem(delIdxVar + 1);