Android ViewPager和从web加载图像

Android ViewPager和从web加载图像,android,image,android-viewpager,Android,Image,Android Viewpager,我需要做一个像图片库一样工作的小应用程序:我应该使用查看页面,当用户向左或向右滑动时,应用程序应该从url加载图像。我有一个带有URL的数组,当用户滑动到新页面时,它应该开始加载特定的图像(它不应该在开始时加载所有图像)。例如,如果我在第一页,我应该看到url中的第一个图像(数组中的索引0)。当我滑动到第二页时,应用程序应该开始从索引1加载图像,当加载完成时,它应该出现在屏幕上。我让view pager处理来自资源的图像,但无法处理远程图像 我不应该使用任何现有的库、代码或类似的东西。以下是我目

我需要做一个像图片库一样工作的小应用程序:我应该使用查看页面,当用户向左或向右滑动时,应用程序应该从url加载图像。我有一个带有URL的数组,当用户滑动到新页面时,它应该开始加载特定的图像(它不应该在开始时加载所有图像)。例如,如果我在第一页,我应该看到url中的第一个图像(数组中的索引0)。当我滑动到第二页时,应用程序应该开始从索引1加载图像,当加载完成时,它应该出现在屏幕上。我让view pager处理来自资源的图像,但无法处理远程图像


我不应该使用任何现有的库、代码或类似的东西。以下是我目前的代码: 主要活动:

    urls = new int[] {
            R.drawable.i1, R.drawable.i2, R.drawable.i3, R.drawable.i4, R.drawable.i5

    };
    viewPager = (ViewPager) findViewById(R.id.pager);
    adapter = new ViewPagerAdapter(MainActivity.this, urls);        
    viewPager.setAdapter(adapter);
这是我的视图适配器:

public ViewPagerAdapter(Context context, int[] urls) {
    this.context = context;
    this.urls = urls;
}
@Override
public Object instantiateItem(ViewGroup container, int position) {
    inflater = (LayoutInflater) context
            .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    View itemView = inflater.inflate(R.layout.viewpager_item, container,
            false);
    // Locate the TextViews in viewpager_item.xml
    imgflag = (ImageView) itemView.findViewById(R.id.image);
    imgflag.setImageResource(urls[position]);
    ((ViewPager) container).addView(itemView);
    return itemView;
}
layout.viewpager_item.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:gravity="center"
android:padding="10dp" >
<ImageView
    android:id="@+id/image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentRight="true"
    android:background="#000000"
    android:padding="1dp" />


有什么建议吗?

您可以使用像

或:


我有一个示例代码,但我现在正在工作。。。若这个问题并没有答案,我将帮助你们解决这个问题,我不应该使用任何现有的图书馆。只有来自ADKI的东西尝试了你的代码,它编译和构建,但不起作用-图像不会加载到图像视图中。我将task.execute()放在((ViewPager)container.addView(itemView)之前;尝试调试,看看doInBackground()方法中是否有异常,我刚刚修复了它。setImageBitmap(image)应该位于受保护的void onPostExecute(void result)方法内部,而不是doInBackground。非常感谢。
Picasso.with(context).load(urls[position]).into(imgflag);
public class AsynImageLoader extends AsyncTask<Void,Void,Void>{

    public String url;
    public ImageView img ;

    public AsynImageLoader(ImageView img,String url){
        this.url = url;
        this.img = img;
    }

    @Override
    protected Void doInBackground(Void... params) {
        try {
            Bitmap bitmap;
            URL imageUrl = new URL(url);

            HttpURLConnection connection;
            if (url.startsWith("https://")) {
                connection = (HttpsURLConnection) imageUrl.openConnection();
            } else {
                connection = (HttpURLConnection) imageUrl.openConnection();
            }
            connection.setConnectTimeout(30000);
            connection.setReadTimeout(30000);
            connection.setInstanceFollowRedirects(true);

            InputStream is = connection.getInputStream();

            bitmap = BitmapFactory.decodeStream(is);
            if(img!=null){
                img.setImageBitmap(bitmap);
            }

        }catch(Exception e){

        }
        return null;
    }
}
AsynImageLoader task = new AsynImageLoader(imgflag,urls[position]);
task.execute();