2016-02-28 4 views
0

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

Мой код для моего пользовательского класса адаптера здесь:

@Override 
     public View getView(int position, View convertView, ViewGroup parent) { 
      Movie movie = getItem(position); 
     if (movie == null) return null; 


     ImageView imageView; 
     /** 
     * if convertView is empty, set it equal to ImageView 
     */ 
     if (convertView == null) { 
      imageView = new ImageView(context); 


      imageView.setLayoutParams(new GridView.LayoutParams(width, height)); 
      imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     } else { 
      imageView = (ImageView) convertView; 
     } 

     Uri coverUrl = movie.getMovieCover(); 
     Picasso.with(context) 
       .load(coverUrl) 
       .into(imageView); 

     // Log.e(LOG_TAG, "URL " + url); 


     return imageView; 
    } 

и это код из моего объекта класса конструктора

public Uri getMovieCover(){ 
     final String BASE = "http://image.tmdb.org/t/p/w185"; 

    Uri builtUri = Uri.parse(BASE).buildUpon() 
      .appendEncodedPath(poster_path) 
      .build(); 

    return builtUri; 
} 

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

Может ли кто-нибудь помочь мне с этой проблемой? В настоящее время я делаю окончательный проект программиста Udacity для Android, поэтому я все еще довольно новичок в программировании на Android.

+0

Ваш код предлагает вам заселили ImageView от URL изображения и явно не загрузили изображение на сд карту. Вы можете сделать то же самое для 2-го действия. Передайте Image Url as String дополнительно и снова заполните ImageView с Url. –

+0

Извините, что я был не таким конкретным, как раньше, но способ, которым приложение должно быть запрограммировано, заключается в использовании parcelables, о котором я ничего не знаю, и мне просто нужна помощь в реализации этой функциональности. В противном случае я бы использовал сериализацию и был сделан с ней. – electronicwall

+0

Вы не поняли. У вас есть URL-адрес изображения как строка? –

ответ

1

Передайте Url как строку дополнительно к второму действию.

В 1-активность/Пользовательский адаптер:

String url = "http://image-url"; 
Intent intent = new Intent (getActivity().this, 2ndActivity.class); 
intent.putExtra("image-url", url); 
getActivity().startIntent(intent); 

В 2 Активность:

String url; 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    Intent i = getIntents(); 
    url = i.getExtra("image-url"); 

    Uri coverUrl = new Uri(url); 

    if (url.Length() > 0) { 
     imageView = new ImageView(context); 
     imageView.setLayoutParams(new GridView.LayoutParams(width, height)); 
     imageView.setScaleType(ImageView.ScaleType.FIT_XY); 
     Picasso.with(context) 
       .load(coverUrl) 
       .into(imageView); 
    } 
} 
+0

Это приведет к повторной загрузке изображения при каждом запуске операции. – user1282637

+0

Это недостаток. Лучше всего загрузить изображение на SD-карту, чем создать растровое изображение/растровое изображение, которое можно извлечь из пути к файлу. –

Смежные вопросы