2016-01-29 4 views
-1

Я создал список, и я проанализировал данные json там (изображение и несколько текстов). Теперь мне нужно передать изображение другому действию при щелчке, и я делаю это так, как я передаю эти тексты putExtra, и я могу легко разобрать там тексты. Но как я разобрать изображение в новой деятельности по .getExtra (получить строку, но не может разобрать его в ImageView Мой код ниже:. Первая активность:Как использовать строку изображения, полученную от .getExtra

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

Как вы можете видеть, я не поместил ни одного связующего для изображения, потому что все, что я поставил, не сработало. Отдых работает нормально.

+0

Для этого вам нужно выполнить задачу в классе адаптера –

ответ

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

И это должно сработать.

+1

Это сработало чудесно! –

0

Для этого вы должны использовать библиотеку загрузчика изображений для загрузки изображений в виде изображений, например,

Universal ImageLoader.

Facebook fresco. и т.д ..

0

Это зависит от того, что строка, которую вы послали. Это возможно:

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

«slika» должен быть идентификатором вашего макета xml.

+0

Итак, у меня есть URL-адрес изображения из json. Я разбираю его в адаптере списка. Но когда я нажимаю элемент в списке, я хочу передать это изображение другому действию (например, вы нажимаете элемент в хранилище google и открываете страницу сгенерированных деталей, в которой есть это изображение из списка) , Поэтому в основном я хочу, чтобы тот же образ передавался другому действию и мог его показать. –

+0

Итак, отправьте URL-адрес от json. Хотя было бы разумно загрузить изображение в локальный кеш и передать его абсолютный путь, как String – Gavriel

+0

, но когда я пытаюсь получить его как ресурс изображения, он ищет значение int. В основном, когда я пытаюсь использовать: ImageView slika = (ImageView) findViewById (R.id.slika); slika.setImageResource // на этом здесь я не могу получить значение из-за отсутствия Int –

0

Путь по изображению в putExtra. Не пытайтесь отправить изображение из растрового изображения или изображения, оно будет тяжелым.

это можно сделать. Сохранить путь_к_файл

intent.putExtra("imagePath", filepath); 

отправить изображение через намерение и использовать

String image_path = getIntent().getStringExtra("imagePath"); 
Bitmap bitmap = BitmapFactory.decodeFile(image_path); 
myimageview.setImageDrawable(bitmap); 
Смежные вопросы