Android 如何从 recyclerView 获取图像 URL(非本地图像)
Android How to get image URL from recyclerView (Not Local image)
我的问题是我有一个 recyclerView 由图像列表(来自 Flickr_API)及其文本组成,我想要做的是当用户点击任何照片时,应该显示一个新的 RecyclerView 列表该特定用户的更多照片。所以,我试图在用户点击图像 url 时捕捉它(任何其他解决问题的解决方案都将被接受)
我尝试在我的 RecyclerView 适配器 Class 中的 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 Library 从 Flickr_API 捕捉图像。
所以,请帮助我如何传递任何数据帮助我在另一个class(我的意图指的是)中捕获更多用户照片。
备注
我试图在我的所有项目中捕捉的照片不是本地图像
因为,我找到了很多解决方案,但都取决于您的可绘制文件夹,这对我的情况没有帮助。
编辑
在我的 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 消息,但是当我尝试在另一个 class 上接收该 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();
}
您可以使用 ImageView 将 imageUrl 设置为 setTag,
holder.imageView.setTag(photo.title);
当用户点击它时,
可以得到值,
holder.imageView.getTag();
希望对您有所帮助。
谢谢,
我的问题是我有一个 recyclerView 由图像列表(来自 Flickr_API)及其文本组成,我想要做的是当用户点击任何照片时,应该显示一个新的 RecyclerView 列表该特定用户的更多照片。所以,我试图在用户点击图像 url 时捕捉它(任何其他解决问题的解决方案都将被接受) 我尝试在我的 RecyclerView 适配器 Class 中的 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 Library 从 Flickr_API 捕捉图像。 所以,请帮助我如何传递任何数据帮助我在另一个class(我的意图指的是)中捕获更多用户照片。
备注 我试图在我的所有项目中捕捉的照片不是本地图像 因为,我找到了很多解决方案,但都取决于您的可绘制文件夹,这对我的情况没有帮助。
编辑 在我的 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 消息,但是当我尝试在另一个 class 上接收该 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();
}
您可以使用 ImageView 将 imageUrl 设置为 setTag,
holder.imageView.setTag(photo.title);
当用户点击它时,
可以得到值,
holder.imageView.getTag();
希望对您有所帮助。
谢谢,