如何使用网络上的新图像点击每个按钮上的ImageVIew?

时间:2012-03-07 14:55:23

标签: java button onclick android-imageview

我是Android新手并尝试创建我的第一个应用。它应该有一个ImageView以及两个按钮(后退和下一个)。当用户单击“下一步”按钮时,ImageView中的图像应替换为下一个图像(托管在我的服务器上)。文件的名称是1.jpg,2.jpg,3.jpg ...我使用以下代码,但有些东西不起作用。当Activity启动时,第一个图像被正确加载,但是当我单击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,但我仍然缺少一些东西。 请有人帮帮我!

2 个答案:

答案 0 :(得分:0)

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

LoadImageFromWeb(String url, int imageNumber) 
{
   String plakatiUrl = url + Integer.toString(imageNumber) + ".jpg";
   //...
}

并使用onClick()方法调用它。

答案 1 :(得分:0)

这对我有用。不过你可以清理它。

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";
    }
}

另外,我建议使用Bitmap代替Drawable。并且,我注意到您将LoadImageFromWeb()方法放在onCreate()中。