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