当前位置: 首页 > 知识库问答 >
问题:

从Android中的PagerAdapter删除视图

钱朝明
2023-03-14

我已经搜索了多个网站,android开发者网站,在没有运气解决我的问题后,我不得不寻求社区帮助。我们将非常感谢所有的帮助和建议。

问题:

我总共有12个从服务器接收的图像(在这里解析),我在一个PagerAdapter中显示了它们中的每一个。如果所有的值都不为空,适配器代码工作正常,问题是我允许空值存储在服务器中。当我从服务器获得整个列表时,我只想在包含not null的适配器中拥有这些视图。例如:假设我得到了5个空路径,那么我的适配器总共显示了12个视图(7个有图像,其余的是空白页)。

我的适配器代码:

public class ProfileImageAdapter extends PagerAdapter implements OnTouchListener{

    private Context localContext;
    private LayoutInflater inflater;
    private List<DataModel> parseObjects = new ArrayList<DataModel>();
    private List<Integer> res = new ArrayList<Integer>();
    // Declare Variables
    private ImageView viewPagerDisplayImage;

    /**
     * 
     * @param context : The context where to display
     * @param parseObjects : The ParseObject to work with
     */
    public ProfileImageAdapter(Context context, List<DataModel> parseObjects) {
        this.localContext = context;
        this.parseObjects = parseObjects;
        inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

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

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

    @Override
    public boolean isViewFromObject(View view, Object object) {
        return (view == ((LinearLayout) object) && object != null);
    }

    /**
     * What is the item to show
     */
    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        inflater = (LayoutInflater) localContext
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View itemView = inflater.inflate(R.layout.profile_image_item, container, false);

        // Locate the Image View in viewpager_item.xml
        viewPagerDisplayImage = (ImageView) itemView.findViewById(R.id.view_pager_display_image_view);

        // Getting the image
        try {
            ParseFile imageFile = parseObjects.get(position).getImage();
            if (imageFile != null) {
                byte[] bitmapImageData = imageFile.getData();
                Bitmap bitmap = BitmapFactory.decodeByteArray(bitmapImageData, 0, bitmapImageData.length);
                viewPagerDisplayImage.setImageBitmap(bitmap);
                viewPagerDisplayImage.setOnTouchListener(this);
                // Add viewpager_item.xml to ViewPager

                itemView.setTag("VALID");
                ((ViewPager) container).addView(itemView);
            } else {
                ((ViewPager) container).addView(itemView);
                itemView.setTag("INVALID");
                destroyItem(container, position, itemView);
            }
        } catch (ParseException e) {
            e.printStackTrace();
        }
        return itemView;
    }

    @Override
    public void destroyItem(ViewGroup container, int position, Object object) {
        // Remove viewpager_item.xml from ViewPager
        //((ViewPager) container).invalidate();
        ((ViewPager) container).removeView((View) object);
    }
}
public class PageViewerProfileImages  extends Activity {

    private ViewPager viewPager;
    private ProfileImageAdapter profileImageAdapter;
    private UserModel userModel = new UserModel();

    // Create the Page View for the Profile Images
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.profile_pager);

        List<DataModel> parseObjects = userModel.getDataModels();
        viewPager = (ViewPager) findViewById(R.id.pagerProfile);
        profileImageAdapter =  new ProfileImageAdapter(this, parseObjects);
        // Setting the adapter
        viewPager.findViewWithTag("VALID");
        viewPager.setAdapter(profileImageAdapter);
    }

}
    < Li > http://developer . Android . com/reference/Android/support/v4/view/page adapter . html # instantiate item(Android . view . view group,int) < li >视图寻呼机PagerAdapter不更新视图

共有1个答案

谭昊乾
2023-03-14

>

  • 创建一个条件,用于分析服务器响应。
  • if(imageUrl!=null){ // 编写代码以在列表中添加图像 URL,这将传入适配器。使用它后,它将仅传入适配器中具有一定值的那些值,然后它将起作用。

    当您传递映像 Url 列表并在适配器列表中分配值时,可以将此条件放在适配器中。然后在分配您的值之前,请检查相同的条件,然后分配。

  •  类似资料:
    • 我一直在使用在动态添加和删除视图到viewpager中显示的适配器,但并不是所有的都能正常工作。 我的ViewPager包含一些带有WebViews的自定义视图。我所做的是一个PagerAdapter的扩展类,它实现了与我第一篇文章的答案中所示的几乎相同的方法。 当我同时删除多个页面时,问题就来了。正如上面的答案中所解释的,对于删除页面,我们将适配器设置为空,然后再次设置。我使用的方法几乎与只使用

    • 有没有办法防止用户在PagerAdapter中向左滑动? 当用户第一次进入应用程序时,他们不能向左滑动,因为那里没有任何东西。那么,如果每次你向右滑动时,左边的图像都被破坏了,并且没有什么会像你最初运行应用程序时那样。

    • 本文向大家介绍从视图中删除行会从MySQL的基表中删除行吗?,包括了从视图中删除行会从MySQL的基表中删除行吗?的使用技巧和注意事项,需要的朋友参考一下 是的,从视图中删除行从基表中删除行。让我们通过创建一个新表来了解这一点。创建表的查询如下 使用insert命令在表中插入一些记录。查询如下- 使用select语句显示表中的所有记录。查询如下- 以下是输出 让我们创建一个视图。创建视图的查询如下

    • 问题内容: 从视图中删除一行,是否会从创建该视图的基表中删除相应的行?我正在使用MySQL。 问题答案: 是的,它会的。唯一需要注意的是权限。 引用官方文档 有些观点是可更新的。也就是说,您可以在诸如UPDATE,DELETE或INSERT之类的语句中使用它们来更新基础表的内容。为了使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。还有某些其他构造会使视图不可更新。

    • 这些文件不在AndriodStudioProjects文件夹中,因为我只导入了未移动的项目.... 基本上,我想完成的是,从Android Studio中的最近项目列表中删除该文件,从Eclipse中重新导出该文件,然后将一个正在工作的项目导入到Android Studio中。

    • 问题内容: 加入主表时,我的视图工作正常: 但是我需要添加以下联接: 尽管我添加了,但仍然得到了“重复”行。我说“重复”是因为第二行具有不同的值。 但是,如果将更改为,则会丢失具有这些“重复”行的客户端的所有行。 我究竟做错了什么?如何从视图中删除这些“重复的”行? 笔记: 此问题在这种情况下不适用: 如何删除重复的行? 问题答案: 如果行中有任何不同的列,DISTINCT不会为您提供帮助。显然,