【问题标题】:Android How to get image URL from recyclerView (Not Local image)Android 如何从 recyclerView 获取图片 URL(非本地图片)
【发布时间】:2017-01-04 01:57:36
【问题描述】:

我的问题是我有一个 recyclerView 由图像列表(来自 Flickr_API)及其文本组成,我想要做的是当用户点击任何照片时,应该显示一个新的 RecyclerView 列出该特定用户的更多照片.所以,一旦用户点击它,我就会尝试捕获图像 url(任何其他解决问题的解决方案都将被接受) 我试图在我的 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);

        }
    });

我的连接服务是 Retrofit2,我正在使用 Glide 库从 Flickr_API 捕获图像。 所以,请帮助我如何传递任何数据有助于我在其他类中捕获更多用户照片(我的意图指的是)。

注意 我试图在我的所有项目中捕捉的照片不是本地图像 因为,我找到了很多解决方案,但都取决于您的可绘制文件夹,这对我没有帮助。

编辑 尝试在我的 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);

        }
    });


}

我收到了带有正确 imgTitle 的正确 Toast 消息,但是当我尝试在另一个类上接收该 Intent 时,我收到它的值为 null

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

}

【问题讨论】:

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


    【解决方案1】:

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

    holder.imageView.setTag(photo.title);
    

    当用户点击它时,

    你可以得到价值,

    holder.imageView.getTag();
    

    希望这会对你有所帮助。

    谢谢,

    【讨论】:

    • 我在我的 onBindViewHolder 函数中添加了这个holder.imageView.setTag(photo.title);,然后在 onClickListner 我添加了这个holder.imageView.getTag();,但我想确保它有效,所以我尝试解决第一个,@ 987654325@ 但它没有显示任何内容
    • 第二个是,intent.putExtra("title",holder.imageView.getTag().toString());,然后去我的第二堂课接受这样的意图Intent intent = new Intent(); String titleImg = intent.getStringExtra("title"); Log.w("============>imgURL = ",titleImg+"***********");,但它也行不通
    • 你在吐司中得到了什么,任何值或空值?当您使用 getTag() 获得结果时,您需要传入上面给出的意图。
    • Toast 没有显示任何内容,我的日志也没有显示任何内容,没有任何消息出现!这对我来说很奇怪!那么,您的意思是意图是正确的解决方案,但在我们确保 setTag 和 getTag 运行良好之后?
    • 重启我的android studio并再次运行我的应用程序后,主recyclerView没有出现,应用程序停止在我的Logcat java.lang.IllegalArgumentException: You must not call setTag() on a view Glide is targeting处理此错误消息
    猜你喜欢
    • 2017-03-22
    • 2010-11-16
    • 2014-08-04
    • 2014-10-17
    • 2012-01-04
    • 1970-01-01
    • 2011-09-26
    • 2016-06-08
    • 1970-01-01
    相关资源
    最近更新 更多