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

时间:2016-01-29 12:32:51

标签: android json parsing android-intent

我创建了一个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设置任何活页夹因为我放的一切都不起作用。休息工作正常。

4 个答案:

答案 0 :(得分:0)

对于此,您必须使用图像加载程序库在imageview中加载图像,如

Universal ImageLoader.

Facebook fresco. 等。

答案 1 :(得分:0)

这取决于您发送的字符串是什么。这是一种可能性:

Uri uri = Uri.parse(getIntent().getExtras().getString("slika"));
ImageView slika = (ImageView) findViewById(R.id.slika);
slika.setImageURI(uri);

“slika”必须是布局xml中的id。

答案 2 :(得分:0)

将图像的路径放在putExtra中。不要尝试发送图像通知Bitmap或imageview它会很重。

你可以这样做。 保存文件路径

intent.putExtra("imagePath", filepath); 

通过意图发送图像并使用

String image_path = getIntent().getStringExtra("imagePath");
Bitmap bitmap = BitmapFactory.decodeFile(image_path);
myimageview.setImageDrawable(bitmap);

答案 3 :(得分:0)

您创建方法(只需复制粘贴):

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

然后在onCreate上调用它:

 new DownloadImageTask((ImageView) findViewById(R.id.slika))
            .execute(getIntent().getExtras().getString("slika"));

它应该有效。