Android如何从recyclerView获取图像URL(非本地图像)

时间:2016-08-27 14:58:05

标签: android android-intent android-recyclerview retrofit2 android-glide

我的问题是我有一个recyclerView包含图像列表(来自Flickr_API)及其文本,我想要做的是当用户点击任何照片时,应显示一个新的RecyclerView,列出该特定用户的更多照片。所以,一旦用户点击它,我试图抓住图片网址(任何其他解决问题的解决方案都会被接受) 我试图在我的RecyclerView适配器类中的BindViewHolder上设置一个clickListner函数,如下所示:

@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) {
            Context context = v.getContext();
            Intent intent = new Intent(context,SpecificUserPhotoRecyclerView.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);

        }
    });

My Connection服务是Retrofit2,我使用Glide Library从Flickr_API捕获图像。 所以,请帮助我如何传递任何数据帮助我在其他课程中捕获更多用户照片(我的意图所指的)。

注意 我试图捕捉所有项目的照片不是本地图像 因为,我找到了很多解决方案,但都取决于你的drawable文件夹,这对我来说无济于事。

修改 在我的onBindViewHolder中尝试使用SetTag和getTag之后就像这样:

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

        }
    });


}

我有一个正确的Toast消息,带有正确的imgTitle,但是当我试图在另一个类上接收到Intent时,我会收到空​​值

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

}

1 个答案:

答案 0 :(得分:2)

您可以使用ImageView将imageUrl设置为setTag,

holder.imageView.setTag(photo.title);

当用户点击它时,

你可以得到价值,

holder.imageView.getTag();

希望这会对你有所帮助。

谢谢,

相关问题