gpt4 book ai didi

android - 从 ViewPager 中删除图像

转载 作者:行者123 更新时间:2023-11-29 02:29:18 24 4
gpt4 key购买 nike

我正在使用 ViewPager 来显示我的图像。

这些图像作为列表从一个 Activity 发送到另一个,然后我在 ViewPager 中显示它们。

但问题是,如果我单击删除按钮,图像会被删除并从列表中移除,但它仍会显示在下一张图像上。

例如第一张图片的高度是全屏 > 我将其删除,viewpager 移动到下一张图片,这张图片的高度为 350,然后高于和低于 350 的背景显示旧图片...

此外,当我尝试删除第二个最后一项时,我得到了一个 IndexOutOfBoundsExceptiom...

这是我的代码 -

public class ImageViewer extends AppCompatActivity {

public int position;
private ArrayList<String> list;
private HackyViewPager pager;
private ImagePagerAdapter ipa;
private List<PhotoView> photoViewList;
private HelperMethods helperMethods;
private static boolean sendResult = false;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.img);

sendResult = false;
helperMethods = new HelperMethods(ImageViewer.this);

Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
setSupportActionBar(toolbar);
getSupportActionBar().setDisplayHomeAsUpEnabled(true);
getSupportActionBar().setDisplayShowHomeEnabled(true);
getSupportActionBar().hide();

Intent i = getIntent();
position = i.getExtras().getInt("position");
list = i.getStringArrayListExtra("list");

pager = (HackyViewPager) findViewById(R.id.pager);
photoViewList = new ArrayList<PhotoView>();

for(int val = 0; val < list.size(); val++) {
PhotoView photoView = new PhotoView(this);
photoView.setZoomable(true);

Glide.with(ImageViewer.this)
.load(new File(list.get(val)))
.into(photoView);

photoViewList.add(photoView);
}

ipa = new ImagePagerAdapter(photoViewList);
pager.setAdapter(ipa);
pager.setCurrentItem(position);

FloatingActionButton dlt = (FloatingActionButton) findViewById(R.id.dlt);
dlt.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
AlertDialog.Builder builder = new AlertDialog.Builder(ImageViewer.this);

builder.setMessage("Sure to Delete this Image?")
.setNegativeButton("Nope", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
}
})

.setPositiveButton("Delete", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {

getFilePos().delete();
ipa.remove(pager.getCurrentItem());

Toast.makeText(ImageViewer.this, "Image Deleted", Toast.LENGTH_SHORT)
.show();
}
});
builder.create()
.show();

}
});
}


public File getFilePos() {
return new File(list.get(pager.getCurrentItem()));
}




public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()){
case android.R.id.home:
onBackPressed();
break;
}
return true;
}




static class ImagePagerAdapter extends PagerAdapter {

private List<PhotoView> images;

public ImagePagerAdapter(List<PhotoView> images) {
this.images = images;
}

@Override
public Object instantiateItem(ViewGroup container, int position) {
PhotoView imageView = images.get(position);
container.addView(imageView);
return imageView;
}

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

@Override
public int getCount() {
return images.size();
}

void remove(int pos) {
images.remove(pos);
notifyDataSetChanged();
}

@Override
public int getItemPosition(Object object) {
return POSITION_NONE;
}

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

最佳答案

从列表中删除图像后,您必须调用

notifyitemremoved();

on 方法在适配器上移除。

关于android - 从 ViewPager 中删除图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50541178/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com