i am coding an Android App to register and save food recipes in a database. I did this with Firebase, so i have a realtime database.
For the Recipes I have a RecyclerView with a CardView in it. So all the Recipces are in this RecyclerView. When a Recipe e.g a CardView Objekt is touched/clicked, it should open a new Activity, give it the Object from the Firebase Database (json tree) and the hole recipe should be shown there.
I tried many different ways found in the internet but none of them worked out for me, so now i am asking here.
Whats to implement that a touch/click is registered and starts an activity with the clicked object in it?
Here my Code:
ListActivity.java
public class ListActivity extends Activity implements View.OnClickListener {
private static final String TAG = "ListActivity";
FloatingActionButton floatingActionButton;
public static class MessageViewHolder extends RecyclerView.ViewHolder{
public TextView rezeptName;
public TextView rezeptUntertitel;
public MessageViewHolder(View v){
super(v);
rezeptName = (TextView) itemView.findViewById(R.id.rezeptTextView);
rezeptUntertitel = (TextView) itemView.findViewById(R.id.rezeptuntertitelTextView);
}
}
private RecyclerView mRezepteRecyclerView;
private LinearLayoutManager mLinearLayoutManager;
private DatabaseReference mFirebaseDatabaseReference;
private FirebaseRecyclerAdapter mFirebaseAdapter;
public Context context;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_list);
floatingActionButton = (FloatingActionButton) findViewById(R.id.floatingActionButton);
floatingActionButton.setOnClickListener(this);
mRezepteRecyclerView = (RecyclerView) findViewById(R.id.RezeptRecyclerView);
mLinearLayoutManager = new LinearLayoutManager(this);
mLinearLayoutManager.setStackFromEnd(true);
mRezepteRecyclerView.setLayoutManager(mLinearLayoutManager);
mFirebaseDatabaseReference = FirebaseDatabase.getInstance().getReference();
mFirebaseAdapter = new FirebaseRecyclerAdapter(
Rezept.class,
R.layout.item_rezept,
MessageViewHolder.class,
mFirebaseDatabaseReference.child("rezepte")) {
@Override
protected void populateViewHolder(MessageViewHolder viewHolder, Rezept model, int position) {
viewHolder.rezeptName.setText(model.getName());
viewHolder.rezeptName.setVisibility(TextView.VISIBLE);
viewHolder.rezeptUntertitel.setText(model.getUntertitel());
viewHolder.rezeptUntertitel.setVisibility(TextView.VISIBLE);
}
};
mFirebaseAdapter.registerAdapterDataObserver(new RecyclerView.AdapterDataObserver(){
@Override
public void onItemRangeInserted(int positionStart, int itemCount){
super.onItemRangeInserted(positionStart, itemCount);
int rezeptCount = mFirebaseAdapter.getItemCount();
int lastVisiblePosition = mLinearLayoutManager.findLastCompletelyVisibleItemPosition();
if (lastVisiblePosition == -1 ||
(positionStart >= (rezeptCount - 1) &&
lastVisiblePosition == (positionStart - 1))) {
mRezepteRecyclerView.scrollToPosition(positionStart);
}
}
});
mRezepteRecyclerView.setLayoutManager(mLinearLayoutManager);
mRezepteRecyclerView.setAdapter(mFirebaseAdapter);
,> ,>activity_list.xml
item_rezept.xml
Rezept.java (recipe class)
package bme.ohmhochschule.de.tasteit;
public class Rezept {
private String name;
private String untertitel;
private String zutaten;
private String beschreibung;
private String dauer;
private String schwierigkeit;
private float wertung;
public Rezept(float wertung, String name, String zutaten, String untertitel, String schwierigkeit, String beschreibung, String dauer) {
this.name = name;
this.untertitel = untertitel;
this.zutaten = zutaten;
this.beschreibung = beschreibung;
this.dauer = dauer;
this.schwierigkeit = schwierigkeit;
this.wertung = wertung;
}
public Rezept(){};
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getUntertitel() {
return untertitel;
}
public void setUntertitel(String untertitel) {
this.untertitel = untertitel;
}
public String getZutaten() {
return zutaten;
}
public void setZutaten(String zutaten) {
this.zutaten = zutaten;
}
public String getBeschreibung() {
return beschreibung;
}
public void setBeschreibung(String beschreibung) {
this.beschreibung = beschreibung;
}
public String getDauer() {
return dauer;
}
public void setDauer(String dauer) {
this.dauer = dauer;
}
public String getSchwierigkeit() {
return schwierigkeit;
}
public void setSchwierigkeit(String schwierigkeit) {
this.schwierigkeit = schwierigkeit;
}
public float getWertung() {
return wertung;
}
public void setWertung(float wertung) {
this.wertung = wertung;
}
}
i am thankful for any help, thank you
