0

Mein Problem ist, dass ich eine RecyclerView besteht aus einer Liste von Bildern (From Flickr_API) und ihren Text, Was ich tun möchte, ist Wenn der Benutzer auf ein Foto tippen Ein neuer RecyclerView sollte angezeigt werden, der mehr Fotos für diesen bestimmten Benutzer auflistet. Also, ich versuche, die Bild-URL zu fangen, sobald der Benutzer darauf klickt (jede andere Lösung löst das Problem wird akzeptiert) Ich habe versucht, eine ClickListner-Funktion auf meinem BindViewHolder in meiner RecyclerView Adapter-Klasse wie folgt:Android Wie Bild-URL von RecyclerView (Not Local Bild)

Mein Verbindungsdienst ist Retrofit2 und ich verwende Glide Library, um Bilder von Flickr_API zu fangen. Also, bitte helfen Sie mir Wie gebe ich irgendwelche Daten, hilft mir, mehr Benutzerfotos in der anderen Klasse zu fangen (was meine Absicht bezieht).

Hinweis Meine Fotos, die ich versuche, an all meinem Projekt zu fangen sind nicht lokale Bilder weil ich viele Lösungen gefunden, aber alles hängt von Ihrem ziehbar Ordner, die mir nicht in meinem Fall helfen.

bearbeiten Nach dem Versuch SetTag und getTag in meinem onBindViewHolder wie diese zu verwenden:

@Override 
public void onBindViewHolder(final PhotoViewHolder holder, final int position) { 
    final FlickrPhoto photo = photos.get(position); 
    holder.textView.setText(photo.title); 
    uri = Uri.parse(photo.image); 
    Glide.with(context).load(uri).placeholder(R.drawable.image_placeholder).crossFade().into(holder.imageView); 

    PhotoViewHolder.imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      holder.imageView.setTag(photo.title); 
      Context context = v.getContext(); 
      Intent intent = new Intent(context,SpecificUserPhotoRecyclerView.class); 
      intent.putExtra("title",String.valueOf(holder.imageView.getTag()).toString()); 
      intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
      Toast.makeText(context,holder.imageView.getTag().toString(),Toast.LENGTH_LONG).show(); 
      context.startActivity(intent); 

     } 
    }); 


} 

ich eine richtige Toast Nachricht mit der richtigen imgTitle haben, aber wenn ich habe versucht, diese Absicht zu erhalten auf der anderen Klasse erhalte ich es mit Nullwert

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_specific_user_photo); 
    //photosListActivity = new PhotosListActivity(); 
    RecyclerView recyclerView = (RecyclerView) findViewById(R.id.user_photo_recycler_view); 
    recyclerView.setLayoutManager(new GridLayoutManager(getApplicationContext(),1)); 
    adapter = new PhotosRecyclerViewAdapter(getApplicationContext(),getPhotos()); 
    recyclerView.setAdapter(adapter); 
    Intent intent = new Intent(); 
    String titleImg = intent.getStringExtra("title"); 
    Log.w("============>imgURL = "+titleImg,"***********"); 
    Toast.makeText(this,titleImg,Toast.LENGTH_LONG).show(); 

} 

Antwort

2

Sie imageUrl als setTag mit Image,

einstellen
holder.imageView.setTag(photo.title); 

Und wenn Benutzer darauf klicken,

Sie den Wert,

holder.imageView.getTag(); 

Hope this Sie wird dazu beitragen, erhalten.

Danke,

+0

ich diesen 'holder.imageView.setTag (photo.title) hinzugefügt haben,' in meiner onBindViewHolder Funktion und dann in der onClickListner Ich habe dieses 'holder.imageView.getTag() hinzugefügt,' aber Ich möchte sicherstellen, dass das funktioniert, also habe ich versucht, Lösungen Erste, 'Toast.makeText (Kontext, holder.imageView.getTag(). ToString(), Toast.LENGTH_LONG) .show()' aber es doesn ' t –

+0

Die zweite ist 'intent.putExtra (" title ", halter.imageView.getTag(). toString());' und gehe zu meiner zweiten Klasse, um diese Absicht wie folgt zu erhalten: Intent intent = new Intent (); Zeichenfolge titleImg = intent.getStringExtra ("title"); Log.w ("============> imgURL =", titleImg + "************"); ' aber es funktioniert auch nicht –

+0

Was Sie Kommen Sie in den Toast, irgendeinen Wert oder null? Wenn Sie Ihr Ergebnis mit getTag() erhalten, müssen Sie die oben angegebene Absicht übergeben. –

Verwandte Themen