Android 如何使用从.getExtra获得的图像字符串

Android 如何使用从.getExtra获得的图像字符串,android,json,parsing,android-intent,Android,Json,Parsing,Android Intent,我创建了一个listview,并在那里解析了json数据(图像和一些文本)。现在我需要在单击时将图像传递给其他活动,就像我通过putExtra传递这些文本一样,我可以在那里轻松解析文本。但是如何通过.getExtra解析新活动中的图像(获取字符串,但无法将其解析为imageview)。 我的代码如下: 第一项活动: listView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Ov

我创建了一个listview,并在那里解析了json数据(图像和一些文本)。现在我需要在单击时将图像传递给其他活动,就像我通过putExtra传递这些文本一样,我可以在那里轻松解析文本。但是如何通过.getExtra解析新活动中的图像(获取字符串,但无法将其解析为imageview)。 我的代码如下: 第一项活动:

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