Java 如何使用来自web的新图像在每次单击按钮时刷新ImageVIew?

Java 如何使用来自web的新图像在每次单击按钮时刷新ImageVIew?,java,button,onclick,android-imageview,Java,Button,Onclick,Android Imageview,我是Android新手,正在尝试创建我的第一个应用程序。它应该有一个ImageView以及两个按钮Back和Next。当用户单击“下一步”按钮时,ImageView中的图像应替换为托管在我的服务器上的下一个图像。这些文件的名称是1.jpg、2.jpg、3.jpg。。。我正在使用以下代码,但有些东西不起作用。当活动开始时,第一个映像被正确加载,但是当我单击Next按钮时,LogCat中也不会发生任何事情 public class slidesActivity extends Activity {

我是Android新手,正在尝试创建我的第一个应用程序。它应该有一个ImageView以及两个按钮Back和Next。当用户单击“下一步”按钮时,ImageView中的图像应替换为托管在我的服务器上的下一个图像。这些文件的名称是1.jpg、2.jpg、3.jpg。。。我正在使用以下代码,但有些东西不起作用。当活动开始时,第一个映像被正确加载,但是当我单击Next按钮时,LogCat中也不会发生任何事情

public class slidesActivity extends Activity {

private ImageView imageView;
private int imageNumber = 1;
private String plakatiUrl = "http://plakati.bg/" + 
                                 Integer.toString(imageNumber) + ".jpg";

public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.slides);

    final Drawable image = LoadImageFromWeb(plakatiUrl);
    imageView = new ImageView(getBaseContext());
    imageView = (ImageView) findViewById(R.id.imageView1);
    imageView.setImageDrawable(image);

    Button nextButton = (Button) findViewById(R.id.nextBtn);
    nextButton.setOnClickListener(new View.OnClickListener() {

        public void onClick(View view) {
            imageNumber++;

            // Have to find why
            imageView.setImageDrawable(image);
            // is not working here
        }
    });

private Drawable LoadImageFromWeb(String url) {
    try {
        InputStream is = (InputStream) new URL(url).getContent();
        Drawable d = Drawable.createFromStream(is, "src name");
        return d;
    } catch (Exception e) {
        System.out.println("Exc=" + e);
        return null;
    }
}
}
我知道我必须用不同的思路来做这件事,所以我没有得到一个ANR,但我仍然遗漏了一些东西。 有人能帮我吗

您的onClick方法每次点击时都会重新加载相同的图像。您需要修改图像及其链接。将LoadImageFromWebString更改为


然后从onClick方法调用它。

这对我很有用。不过你可以把它清理干净

public class TestAppActivity extends Activity {

    private ImageView imageView;
    private int imageNumber = 1;
    private String plakatiUrl = "http://plakati.bg/";
    private Drawable image = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.slides);

        image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));
        imageView = new ImageView(getBaseContext());
        imageView = (ImageView) findViewById(R.id.imageView1);
        imageView.setImageDrawable(image);

        Button nextButton = (Button) findViewById(R.id.nextBtn);
        nextButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                imageNumber++;

                image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));

                imageView.setImageDrawable(image);
            }
        });

    }

    private Drawable LoadImageFromWeb(String url) {
        Drawable d = null;

        InputStream is;
        try {
            is = (InputStream) new URL(url).getContent();
            d = Drawable.createFromStream(is, "src name");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return d;
    }

    private String generateUrlString(String str, int n) {

        return str + Integer.toString(n) + ".jpg";
    }
}

另外,我建议使用位图而不是可绘制的。我注意到您将LoadImageFromWeb方法放在onCreate中

嗨,谢谢你的帮助。我试过了,但我还是错过了一些东西。我调用的方法不是:imageView.setImageDrawableimage;伟大的它正在工作!谢谢你的帮助。使用位图而不是可绘制的有什么好处?请查看以下链接:和
public class TestAppActivity extends Activity {

    private ImageView imageView;
    private int imageNumber = 1;
    private String plakatiUrl = "http://plakati.bg/";
    private Drawable image = null;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.slides);

        image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));
        imageView = new ImageView(getBaseContext());
        imageView = (ImageView) findViewById(R.id.imageView1);
        imageView.setImageDrawable(image);

        Button nextButton = (Button) findViewById(R.id.nextBtn);
        nextButton.setOnClickListener(new View.OnClickListener() {

            public void onClick(View view) {
                imageNumber++;

                image = LoadImageFromWeb(generateUrlString(plakatiUrl, imageNumber));

                imageView.setImageDrawable(image);
            }
        });

    }

    private Drawable LoadImageFromWeb(String url) {
        Drawable d = null;

        InputStream is;
        try {
            is = (InputStream) new URL(url).getContent();
            d = Drawable.createFromStream(is, "src name");
        } catch (MalformedURLException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        return d;
    }

    private String generateUrlString(String str, int n) {

        return str + Integer.toString(n) + ".jpg";
    }
}