我有带卡片视图的recyclerview。每张卡都包含一张图片,其中有一张图片是使用Picasso从firebase数据库中检索出来的。现在我要做的是每当我点击图片视图时,它都会在新的活动中打开该图片。我能够通过以下方式打开新的活动点击imageview.but它没有显示图像。
为此我在我的适配器类中使用了以下代码:
public class ShowImage extends AppCompatActivity {
Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_show_image);
ImageView img = findViewById(R.id.shwimg);
Intent i = getIntent();
int position = i.getIntExtra("id", 0);
img.setImageResource(ArrayList.get(position));
}
}
在其他课程中,我使用了这段代码,但我不知道是对还是
{{1}}
拜托,帮帮我
答案 0 :(得分:1)
尝试发送图片网址而不是位置。像这样更改适配器中onclick
方法的内容
Intent mainIntent = new Intent(context, ShowImage.class);
mainIntent.putExtra("img_url", Details.getImgurl());
context.startActivity(mainIntent);
在ShowImage活动中保存就像这样
Intent i = getIntent();
String image = i.getStringExtra("img_url");
Picasso.with(ShowImage.this).load(image).resize(120, 60).into(img);
答案 1 :(得分:0)
最简单的方法是将imageUrl从适配器发送到活动,作为字符串额外。然后使用picasso加载图像,就像在适配器中一样
答案 2 :(得分:0)
在点击监听器中添加此内容
Bundle bundle = new Bundle();
bundle.putExtra("img_url", Details.get(position).getImgurl());
Intent mainIntent = new Intent(context, ShowImage.class);
mainIntent.putExtras(bundle);
((Activity)context).startActivity(mainIntent);
在活动类中添加以下内容以获取图片网址
String url = getIntent.getStringExtra("img_url);
并像在适配器类中一样将其设置为相应的图像视图
答案 3 :(得分:0)
在这里,您只传递RecyclerView项目的位置,而不是传递图像。所以,您需要使用这样的意图传递图像:
//create intent
Intent mainIntent = new Intent(context, ShowImage.class);
//add bundle to intent
intent.putExtra("img", Details.getImgurl());
//start activity
context.startActivity(mainIntent);
在另一个活动中获取意图:
String imgurl= getIntent().getStringExtra("img");
Picasso.with(this).load(imgurl).resize(120, 60).into(img);