Dave
Dave

Reputation: 131

Android get firebase push ID in RecyclerView OnClickListener

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

Answers (1)

Dave
Dave

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

Related Questions