实现 ViewPager 以显示来自服务器的图像
Implementing ViewPager for displaying the images that comes from server
我想实现viewpager。在我的视图寻呼机中,我需要显示来自 Rest API 的图像。请给我必要的建议和忠告,以便我能在这方面取得成功。
首先你需要一个自定义的 viewpager 适配器:
Picasso 是一个很棒的库,可以从中加载图像。我会给你一个 link 以防你需要进一步的帮助来理解它: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>
来自你的activity:
从 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));
}
}
我想实现viewpager。在我的视图寻呼机中,我需要显示来自 Rest API 的图像。请给我必要的建议和忠告,以便我能在这方面取得成功。
首先你需要一个自定义的 viewpager 适配器: Picasso 是一个很棒的库,可以从中加载图像。我会给你一个 link 以防你需要进一步的帮助来理解它: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>
来自你的activity:
从 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));
}
}