【问题标题】:The constructor is undefined working with dynamic ViewPager构造函数未定义使用动态 ViewPager
【发布时间】:2015-04-27 13:20:24
【问题描述】:

我在 ViewPagerActivity.java 中得到 The constructor ImagePagerAdapter(ArrayList<Actors>) is undefined

// The constructor ImagePagerAdapter(ArrayList<Actors>) is undefined
ImagePagerAdapter pageradapter = new ImagePagerAdapter(fetchedList); 

我正在使用this 教程制作一个小型照片库应用程序,其中我有两个活动,第一个是GridViewActivity,第二个是ViewPagerActivity

当用户单击 GridViewActivity 中的一项时,我想在 ViewPager 活动中显示点击的图像

我已经编写了代码来使用 Picasso lib 将图像解析为 GridView

演员:

public class Actors implements Serializable {

    private static final long serialVersionUID = -236818675216044571L;

    private String image;

    public Actors() {
        // TODO Auto-generated constructor stub
    }

    public Actors(String image) {
        super();        
        this.image = image;
    }

    public String getImage() {
        return image;
    }

    public void setImage(String image) {
        this.image = image;
    }

}

为了在ViewPager 中显示images,我创建了另一个名为:ViewPagerActivity.java 的类

ViewPagerActivity.java:

    public class ViewPagerActivity extends Activity {

    ......

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.view_pager);

        .....
        }


        ......

    }
}

因此,我得到了完整的 ArrayList 和一个被点击的项目位置以及图像 URL,但没有得到下一步做什么来获取 ViewPager 中的图像?

ImagePagerAdapter.java:

public class ImagePagerAdapter extends PagerAdapter {

    private List<ImageView> images;

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

    @Override
    public Object instantiateItem(ViewGroup container, int position) {
        ImageView 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();
    }

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

你想试试吗?所以你可以下载完整的代码here

【问题讨论】:

  • 当用户单击GridViewActivity 中的一项时,是否要打开ViewPager 活动?
  • 希望您希望在不同页面的视图寻呼机中显示相同的图像。您需要创建一个 PagerAdapter 并将其链接到您的视图寻呼机对象。可以参考androidbegin.com/tutorial/…
  • @Catalina 正是 ..
  • 尝试扩展 xml 文件或定义 ImagevIew 的布局参数

标签: java android json gridview android-viewpager


【解决方案1】:

但我很困惑,接下来要做什么才能将我的 GridView 图像显示到 ViewPager 活动。

第一步是让GridViewActivity 扩展Fragment 而不是Activity。第二步是创建一个扩展FragmentPagerAdapter的类,覆盖getItem(),返回包含GridView的Fragment

【讨论】:

    【解决方案2】:
    【解决方案3】:

    如果您的fetchedListActors 模型类的arraylist,那么您需要在适配器构造函数中进行更改

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

    如果是另一个类的数组列表,则保留与您相同的构造函数。问题是因为您的构造函数中的数组列表类型不匹配并传递了不同的数组列表。

    【讨论】:

    • 我已经尝试过了,但是得到:类型不匹配:无法在这一行从 Actors 转换为 ImageView ImageView imageView = images.get(position);并且 ViewGroup 类型中的 removeView(View) 方法不适用于此行的参数(Actor):container.removeView(images.get(position));
    • 但是在您的模型类中,您已将图像设置为字符串,不适用于 ImageView 类
    • 您到底想要什么?想要加载图片?
    • @SilentKiller 是的,我会的。
    • @SilentKiller 完整源代码是什么意思,我已经编写了我自己面临的问题的完整代码,所以只是寻求帮助
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-11
    • 2020-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多