Android 如何使用从.getExtra获得的图像字符串
我创建了一个listview,并在那里解析了json数据(图像和一些文本)。现在我需要在单击时将图像传递给其他活动,就像我通过putExtra传递这些文本一样,我可以在那里轻松解析文本。但是如何通过.getExtra解析新活动中的图像(获取字符串,但无法将其解析为imageview)。 我的代码如下: 第一项活动:Android 如何使用从.getExtra获得的图像字符串,android,json,parsing,android-intent,Android,Json,Parsing,Android Intent,我创建了一个listview,并在那里解析了json数据(图像和一些文本)。现在我需要在单击时将图像传递给其他活动,就像我通过putExtra传递这些文本一样,我可以在那里轻松解析文本。但是如何通过.getExtra解析新活动中的图像(获取字符串,但无法将其解析为imageview)。 我的代码如下: 第一项活动: listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Ov
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent(MainActivity.this, Testic.class);
String prenos = list.get(position).getEmail();
String voda = list.get(position).getPhone();
String name = list.get(position).getName();
String slika = list.get(position).getImage();
intent.putExtra("mail", prenos);
intent.putExtra("voda", voda);
intent.putExtra("name", name);
intent.putExtra("slika", slika);
startActivity(intent);
}
});
TextView probno = (TextView) findViewById(R.id.probno);
probno.setText(getIntent().getExtras().getString("mail"));
TextView voda = (TextView) findViewById(R.id.voda);
voda.setText(getIntent().getExtras().getString("voda"));
TextView name = (TextView) findViewById(R.id.name);
name.setText(getIntent().getExtras().getString("name"));
ImageView slika = (ImageView) findViewById(R.id.slika);
正如您所见,我没有为imageview放置任何活页夹,因为我放置的所有东西都不起作用。Rest工作正常。为此,您必须使用图像加载程序库在imageview中加载图像,如
等等。这取决于您发送的字符串。这是一种可能性:
Uri uri = Uri.parse(getIntent().getExtras().getString("slika"));
ImageView slika = (ImageView) findViewById(R.id.slika);
slika.setImageURI(uri);
“slika”必须是布局xml中的一个id。将图像的路径放入putExtra。不要尝试发送位图或imageview的图像通知,它将很重 你可以这样做。 保存文件路径
intent.putExtra("imagePath", filepath);
通过意图发送图像并使用
String image_path = getIntent().getStringExtra("imagePath");
Bitmap bitmap = BitmapFactory.decodeFile(image_path);
myimageview.setImageDrawable(bitmap);
创建方法(只需复制粘贴):
它应该可以工作。为此,您必须在适配器类中执行任务,因此基本上我有一个来自json的图像的url。我通过适配器将其解析到listview中。但当我单击listview中的某个项目时,我想将该图像传递给其他活动(例如,单击google store中的某个项目,它会打开一个生成的详细信息页面,其中包含来自listview的图像)。因此,基本上我希望将相同的图像传递到另一个活动,并能够在其中显示。因此,从json发送url。虽然将图像下载到本地缓存并像StringI一样传递其绝对路径可能是明智的,但当我尝试将其作为图像资源时,它会搜索int值。基本上,当我尝试使用:Ima时geView slika=(ImageView)findviewbyd(R.id.slika);slika.setImageResource//在这里,由于不是Int,我无法获取该值
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
String urldisplay = urls[0];
Bitmap mIcon11 = null;
try {
InputStream in = new java.net.URL(urldisplay).openStream();
mIcon11 = BitmapFactory.decodeStream(in);
} catch (Exception e) {
Log.e("Error", e.getMessage());
e.printStackTrace();
}
return mIcon11;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
}
new DownloadImageTask((ImageView) findViewById(R.id.slika))
.execute(getIntent().getExtras().getString("slika"));