Reputation: 320
I know this question has been asked a 100 times, but I couldn't find any answers related to my issue because I'm new and their code is completely different. I'm displaying images from Firebase
into RecyclerView
when the images clicked it must open the image like a pop-up or in an Activity
.
quote.java
public class quote extends AppCompatActivity {
RecyclerView mRecyclerView;
FirebaseDatabase mFirebaseDatabase;
DatabaseReference mRef;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_quote);
ActionBar actionBar = getSupportActionBar();
actionBar.setTitle("Post List");
int noc =2;
mRecyclerView=findViewById(R.id.recyclerView);
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new GridLayoutManager(this,noc));
mFirebaseDatabase=FirebaseDatabase.getInstance();
mRef=mFirebaseDatabase.getReference("Data");
}
@Override
protected void onStart() {
super.onStart();
FirebaseRecyclerAdapter<Model,ViewHolder> firebaseRecyclerAdapter=
new FirebaseRecyclerAdapter<Model, ViewHolder>(Model.class,R.layout.row,ViewHolder.class,mRef) {
@Override
protected void populateViewHolder(ViewHolder viewHolder, Model model, int position) {
viewHolder.setDetails(model.getTitle(), model.getImage());
viewHolder.mView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(quote.this,"hello",Toast.LENGTH_LONG).show();
}
});
}
};
mRecyclerView.setAdapter(firebaseRecyclerAdapter);
}
}
Model.java
public class Model {
String title,image;
public Model(){}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getImage() {
return image;
}
public void setImage(String image) {
this.image = image;
}
}
ViewHolder.java
public class ViewHolder extends RecyclerView.ViewHolder {
View mView;
public ViewHolder( View itemView) {
super(itemView);
mView = itemView;
}
public void setDetails(String title, String image){
TextView mTitleTv = mView.findViewById(R.id.rTitleTv);
ImageView mImageTv = mView.findViewById(R.id.rImageView);
mTitleTv.setText(title);
Picasso.get().load(image).into(mImageTv);
}
}
Upvotes: 0
Views: 716
Reputation: 210
ViewHolder.ImageView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
itemListener.recyclerViewListClicked(view, position);
}
});
Send Interface context or callback to Adapter Constructor from your Fragment or Activity While Setting/Calling Adapter and OnBindviewHolder Set Data to Interface function and implements those function in Activity or Fragment to access data on Click
Upvotes: 2
Reputation: 4470
If you want to see image enlarged, dismiss on swipe down/up you can use supporting libraries like Fresco from Facebook here is the implementation guide: https://frescolib.org/docs/index.html or you could use some Fresco wrappers which make easier to use Fresco for example: https://github.com/stfalcon-studio/FrescoImageViewer
So by using Fresco you could do like this, image will appear in full screen or customised size:
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Uri uri = Uri.parse("image url here");
draweeView.setImageURI(uri);
}
});
Upvotes: 1
Reputation: 126
mImageTv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
// Do open image zoom activity
}
});
you can use this library as an activity to zoom your ImageView. for smooth transition use this guide for transition animation
Upvotes: 1
Reputation: 2377
You need to use itemView.
viewHolder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Toast.makeText(quote.this,"hello",Toast.LENGTH_LONG).show();
}
});
Upvotes: 2