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

带有寻呼机的视图寻呼机适配器不起作用

杨和蔼
2023-03-14

我正在尝试使用PagerAdapter显示来自可绘制视图寻呼机的图像。为此,我编写了以下代码--

//调用PagerAdapter

public void showAwardsBadgesAlert() 
    {
        // custom dialog
        final Dialog dialog = new Dialog(context, R.style.MyAlertDlgTheme);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(R.layout.awards_badges_dlg_layout);
        dialog.setCanceledOnTouchOutside(false);
        dialog.setCanceledOnTouchOutside(true);

        ViewPager awardsBadgesPager = (ViewPager) dialog.findViewById(R.id.awardsBadgesPager);

        AwardsBadgesAdapter awardsBadgesAdapter = new AwardsBadgesAdapter(context, feedObject.getAwardStatistics().getAwardsBdgesList());
        awardsBadgesPager.setAdapter(awardsBadgesAdapter);

        dialog.show();
    }

下面是我的适配器类--

public class AwardsBadgesAdapter extends PagerAdapter
{
    private Context context;
    private ArrayList<AwardsBadges> awardsList;

    public AwardsBadgesAdapter(Context context, ArrayList<AwardsBadges> awardsList) 
    {
        this.context = context;
        this.awardsList = awardsList;
    }

    @Override
    public int getCount() 
    {
        if(awardsList != null)
        {
            return awardsList.size();
        }
        return 0;
    }

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

    @Override
    public Object instantiateItem(final View container, final int position) 
    {
        LayoutInflater inflater = (LayoutInflater) this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View layout = inflater.inflate(R.layout.awards_badges_dlg_item, null);

        ImageView ivAwards = (ImageView) layout.findViewById(R.id.ivAwardsBadges);

        AwardsBadges currBadge = awardsList.get(position);

        if(currBadge.getImageName()!=null && currBadge.getImageName().equalsIgnoreCase("pink star diamond"))
        {
            Picasso.with(context).load(R.drawable.pinkstar).into(ivAwards);
        }
        else if(currBadge.getImageName()!=null && currBadge.getImageName().equalsIgnoreCase("tanzanite"))
        {
            Picasso.with(context).load(R.drawable.tanzanite).into(ivAwards);
        }
        else if(currBadge.getImageName()!=null && currBadge.getImageName().equalsIgnoreCase("painite"))
        {
            Picasso.with(context).load(R.drawable.painite).into(ivAwards);
        }
        else if(currBadge.getImageName()!=null && currBadge.getImageName().equalsIgnoreCase("taaffeite"))
        {
            Picasso.with(context).load(R.drawable.taaffeite).into(ivAwards);
        }


        return layout;
    }

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

    @Override
    public float getPageWidth(int position) 
    {
        return (0.33f);
    }
}

下面是我的对话框 xml--

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent" >
    <android.support.v4.view.ViewPager
        android:id="@+id/awardsBadgesPager"
        android:layout_width="match_parent"
        android:layout_height="@dimen/sz_seventy"
        android:layout_below="@+id/txtPlace"
        android:layout_margin="10dp"
        android:background="@color/tipstransperent"
        android:padding="10dp"
        android:visibility="visible" >
    </android.support.v4.view.ViewPager>
</RelativeLayout>

下面是 ViewPager Item xml--

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:padding="5dp" >

    <ImageView
        android:id="@+id/ivAwardsBadges"
        android:layout_width="@dimen/sz_fifty"
        android:layout_height="@dimen/sz_fifty"
        android:layout_centerInParent="true" />

</RelativeLayout>

//下面是解释当前如何显示空的ViewPager的屏幕截图--

当我调试应用程序时,一切似乎都很好,但不知道为什么图像没有显示在ViewPager中。请帮忙..

共有2个答案

查宜民
2023-03-14

((ViewPager)容器)。addView(布局);将上述语句添加到instantiateItem()方法中的return语句之前。这肯定会对你有帮助。

阙新觉
2023-03-14

首先,您应该使用视图组作为第一个参数来覆盖instantiateItem(),而不是使用View。后者已被弃用。

然后,需要将膨胀的视图添加到页面编辑器instantiateItem()方法中的。引用instantiateItem()方法的文档:

适配器负责将视图添加到此处给出的容器

只需添加< code > container . add view(layout);到< code>instantiateItem()方法,在< code>return语句之前。

 类似资料:
  • 我的应用程序中有一个viewpager,它有7个片段,每个片段代表各自的逻辑 但是,有两个片段是相互耦合的,一个片段不能没有另一个片段而存在。 我有两个按钮,在屏幕底部的“上一个”和“下一个”,在片段之间切换。 我想使viewpager中的滑动无法到达其中一个耦合片段 现在我这样做:我把第一个片段(耦合的片段)放在位置0,第二个片段放在最后一个位置,这样当你左右滑动时,你就可以最后到达第二个耦合的

  • 我怎样才能在Android中获得类似这样的东西? 我已经用深度页面转换器实现了一个viewpager,但是我想不出在后面添加项目预览的方法。

  • 你好 我已经做了很长时间的编程,但刚刚开始为android开发,至少可以说它和c有很大的不同。。。 无论如何,我正在尝试实现一个带有一些选项卡的gui,它应该能够在向左/向右滑动时更改选项卡。这些选项卡是通过actionbar(确切地说是ActionBarSherlock)实现的,即使用支持库中的ViewPager进行滑动。单个选项卡是片段(SherlockFragment:s)。在底部应该有某种

  • 如何创建这样一个Android ViewPager?

  • 我想在垂直视图页中实现一个recyclerview。我当前的布局如下所示 如果我从Fragment1滑动到Fragment2,一切正常。我可以在回收器视图中上下滚动。如果我尝试滑动/滚动回Fragment1,就会出现问题。 如果用户已滚动到回收器视图的顶部,我想将下一个“向上”滚动事件转发到垂直视图页页面。我尝试过重写 方法,但遗憾的是仍然没有成功。有什么想法吗?感谢您的帮助:)

  • 所以我试着用可视寻呼机在屏幕间切换。我试着不使用碎片来做这件事,但是我不能让它工作。我在第59行得到一个错误,它是mview pager . setadapter(mCustomPagerAdapter);当我试图设置我的适配器时出现空指针异常。我在这里找到了一个例子。我想我在这个问题上有些力不从心,这是我第一次尝试使用可视寻呼机。 这是我的路由详细信息活动,我试图设置适配器 这是我的自定义页面适