Reputation: 131
I'm using generic Recyclerview to populate data from firebase, and I want to know how to get push ID from firebase so that I can proceed to the detail screen?
I tried to use
DatabaseReference mDatabaseReference = getRef(position);
In onBindViewHolder but it's not working
I'm aware that i can get push ID from FirebaseRecyclerAdapter, but for this case i'm using generic Recyclerview.
private class SimpleAdapter extends RecyclerView.Adapter<SimpleViewHolder> {
@Override
public SimpleViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
View mView = LayoutInflater.from(parent.getContext()).inflate(R.layout.simple_item_recyclerview, parent, false);
return new SimpleViewHolder(mView);
}
@Override
public void onBindViewHolder(final SimpleViewHolder holder, final int position) {
DatabaseReference mDatabaseReference = getRef(position);
final String post_key = mDatabaseReference.getKey();
holder.tvShopTitle.setText(myList.get(position).getTitle());
holder.tvShopAddress.setText(myList.get(position).getAddress());
holder.mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mIntent = new Intent(getActivity(), DetailActivity.class);
mIntent.putExtra("Key", post_key);
mIntent.putExtra("Title", myList.get(position).getTitle());
getActivity().startActivity(mIntent);
}
});
}
@Override
public int getItemCount() {
return myList.size();
}
}
Thanks for your time :)
Upvotes: 2
Views: 2166
Reputation: 131
Here is the solution that worked for me:
Here is a method where i use it to insert new value to firebase database:
FirebaseDatabase firebaseDatabase = FirebaseDatabase.getInstance();
DatabaseReference myRef = firebaseDatabase.getReference().child("Post").push();
Map<String, Object> map = new HashMap<>();
map.put("Title", "dummy title");
map.put("Address", "dummy address");
map.put("PostID", myRef.getKey());
myRef.setValue(map);
Now that i have push id stored in firebase database, i can then retrieve that value along with other data and populate recyclerview as follows:
@Override
public void onBindViewHolder(final SimpleViewHolder holder, final int position) {
final String post_key = myList.get(position).getShopID();
holder.tvShopTitle.setText(myList.get(position).getTitle());
holder.tvShopAddress.setText(myList.get(position).getAddress());
holder.mLayout.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent mIntent = new Intent(getActivity(), DetailActivity.class);
mIntent.putExtra("Key", post_key);
mIntent.putExtra("Title", myList.get(position).getTitle());
getActivity().startActivity(mIntent);
}
});
}
Here is how my Pojo class looks like:
public class MyPojo {
private String Title;
private String Address;
private String ShopID;
public MyPojo() {
}
public MyPojo(String title, String address, String shopID) {
Title = title;
Address = address;
ShopID = shopID;
}
public String getTitle() {
return Title;
}
public String getAddress() {
return Address;
}
public String getShopID() {
return ShopID;
}
}
Upvotes: 1