【问题标题】:ViewPager delete a pageViewPager 删除页面
【发布时间】:2015-07-17 17:12:21
【问题描述】:

如何从视图寻呼机中永久删除页面。当用户按下该屏幕上的按钮时,我想删除一个页面。我为此苦苦挣扎。我阅读了 pageradapter 的文档并找到了destroyitem,但它对我没有多大帮助。我可以在 viewpager 中添加图像,但删除仍然给我带来了困难。请帮忙。

以下是获取图像的活动代码,我想根据用户请求删除图像。

public class ImageDisplayActivity extends Activity {
private List<String> filePaths;

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


    // Get Image Paths for the PagerAdapter
    filePaths = getIntent().getExtras().getStringArrayList("filePaths");
    int currPosition = getIntent().getExtras().getInt("position");

    ViewPager viewPager = (ViewPager) findViewById(R.id.view_pager);
    viewPager.setCurrentItem(currPosition);

    ImagePagerAdapter adapter = new ImagePagerAdapter();
    viewPager.setAdapter(adapter);
}

private class ImagePagerAdapter extends PagerAdapter {
    @Override
    public int getCount() {
        return filePaths.size();
    }

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        Context context = ImageDisplayActivity.this;
        ImageView imageView = new ImageView(context);

        int padding = 16;
        imageView.setPadding(padding, padding, padding, padding);
        imageView.setScaleType(ImageView.ScaleType.CENTER_INSIDE);

        // Get Image
        BitmapFactory.Options bmOptions = new BitmapFactory.Options();
        bmOptions.inJustDecodeBounds = false;
        bmOptions.inSampleSize = 4;
        bmOptions.inPurgeable = true;
        Bitmap bitmap = BitmapFactory.decodeFile(filePaths.get(position), bmOptions);

        // Display Image
        imageView.setImageBitmap(bitmap);

        ((ViewPager) container).addView(imageView, 0);
        return imageView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object imageView) {
        ((ViewPager) container).removeView((ImageView) imageView);
    }
}

}

【问题讨论】:

  • 将其从您的适配器中删除,而不是从 viewpager 中删除
  • 你能说得更具体一些吗

标签: android android-viewpager


【解决方案1】:

正如@Kuffs 所说,从 filePaths 中删除项目,然后通知适配器底层数据已更改:

filePaths.remove(...); // Remove whatever you want
adapter.notifyDatasetChanged(); // Tell the adapter that it's time to update views

【讨论】:

    【解决方案2】:

    我发布答案是因为我无法发表评论。

    您可以尝试将其从适配器中移除。将此添加到您的 destroyItem:

    if(position == conditionToRemove){
        filePaths.remove(position); 
        adapter.notifyDatasetChanged()
    }
    

    而且,您必须将 ImagePagerAdapter 设为全局变量。 希望这会有所帮助!

    【讨论】:

    • 好的,我没有意识到有人已经发布了答案!我应该删除它还是离开它?
    • 确定..在什么情况下您要删除页面?
    • 我在每个页面的底部放置一个按钮,点击该按钮
    • 您必须创建一个带有图像视图和按钮的 xml 文件,并为该视图充气
    • 你在哪里充气?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多