【问题标题】:Implementing ViewPager for displaying the images that comes from server实现 ViewPager 以显示来自服务器的图像
【发布时间】:2015-08-22 10:27:14
【问题描述】:

我想实现viewpager。在我的视图寻呼机中,我需要显示来自 Rest API 的图像。请给我必要的建议和意见,以便我能在这方面取得成功。

【问题讨论】:

  • 最重要的建议是在谷歌上搜索并阅读尽可能多的内容,以自己构建一些东西。如果它不起作用,您可以在 StackOverflow 上发布您的代码和可能的错误并寻求帮助。

标签: android json layout android-viewpager


【解决方案1】:

首先你需要一个自定义的 viewpager 适配器: Picasso 是一个很棒的库,可以从中加载图像。如果您需要进一步帮助理解它,我会给您一个链接:http://square.github.io/picasso/

public class ViewPagerAdapter extends PagerAdapter {
Context c;
private List<String> _imagePaths;
private LayoutInflater inflater;

public ViewPagerAdapter(Context c, List<String> imagePaths) {
    this._imagePaths = imagePaths;
    this.c = c;
}

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

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

@Override
public Object instantiateItem(ViewGroup container, int position) {
    ImageView imgDisplay;

    inflater = (LayoutInflater) c
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View viewLayout = inflater.inflate(R.layout.pager_item, container,
            false);

    imgDisplay = (ImageView) viewLayout.findViewById(R.id.image);

    Picasso.with(c).load(_imagePaths.get(position)).into(imgDisplay);
    (container).addView(viewLayout);

    return viewLayout;
}

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

}
}

这是 pager_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:orientation="vertical">

    <ImageView
        android:id="@+id/image"
        android:layout_centerInParent="true"
        android:layout_width="match_parent"
        android:layout_height="match_parent" />
</RelativeLayout>

来自您的活动:

从 Rest 获取列表 url 后:这就是你要做的:

List<String> urls;

public class MainPage extends Activity {
 public void onCreate(Bundle savedInstance) {
    super.onCreate(savedInstance);
    setContentView(R.layout.main_page);
urls= new ArrayList<>();
    pager = (ViewPager) findViewById(R.id.pager);
urls.add("www.image1.com");
urls.add("www.image2.com");
        pager.setAdapter(new ViewPagerAdapter(getApplicationContext(), urls));

}
}

【讨论】:

  • 我应该在哪里提供图片的 URL 列表?
  • 您在任务执行后从休息客户端获取 url 列表后给出。 R.id.pager 是查看寻呼机本身的活动的 xml。如果您仍然无法弄清楚,我将编辑我的答案,但请尝试。
  • 我有需要显示的图片网址。但是我怎样才能让他们成为一个列表呢?
  • 其余客户端应将它们作为 json 数组返回。从 json 数组中,您将它们转换为 List。如果它是一张图片中的一个 url,那么你不需要 viewpager
  • 对于每张图片我都有一个单独的网址。
猜你喜欢
  • 1970-01-01
  • 2022-01-20
  • 1970-01-01
  • 1970-01-01
  • 2015-10-10
  • 1970-01-01
  • 2015-04-30
  • 2022-01-19
  • 2012-10-06
相关资源
最近更新 更多