-1

I'm able to pass textview data from cardview to another activity called "DetailActivity", but I don't know how to pass image to DetailAtivity , also how I can send other data which is not in my viewholder class, like if I want to send description of an item using intent?

Here is my FirebaseAdapter

   FirebaseRecyclerAdapter<Food,FoodViewHolder> adapter = new FirebaseRecyclerAdapter<Food, FoodViewHolder>(
            Food.class,
            R.layout.food_item,
            FoodViewHolder.class,

            //referencing the node where we want the database to store the data from our Object
            mDatabaseReference.child("users").child(userId).child("food").getRef()
    ) {


        @Override
        protected void populateViewHolder(final FoodViewHolder viewHolder, final Food model, int position) {
            if(tvNoMovies.getVisibility()== View.VISIBLE){
                tvNoMovies.setVisibility(View.GONE);
            }
            viewHolder.tvFoodName.setText(model.getFoodName());
            viewHolder.ratingBar.setRating(model.getFoodRating());
            viewHolder.tvFoodCategory.setText(model.getFoodCategory());
            viewHolder.tvFoodAvailableUpto.setText(model.getFoodAvailableUpto());
            viewHolder.tvFoodPrice.setText(model.getFoodPrice());
            Picasso.with(getActivity().getApplicationContext()).load(model.getFoodPoster()).into(viewHolder.ivFoodPoster);

            viewHolder.setItemClickListener(new ItemClickListener() {
                @Override
                public void onItemClick(int pos) {
                    //OPEN DETAI ACTIVITY
                    Intent i = new Intent(getContext(), DetailActivity.class);
                    i.putExtra("TITLE_KEY",viewHolder.tvFoodName.getText().toString());
                    i.putExtra("CAT_KEY",viewHolder.tvFoodCategory.getText().toString());
                    i.putExtra("AVAIL_KEY",viewHolder.tvFoodAvailableUpto.getText().toString());
                    i.putExtra("PRI_KEY",viewHolder.tvFoodPrice.getText().toString());
                  here  // i.putExtra("LOGO_KEY",viewHolder.ivFoodPoster);

                    getContext().startActivity(i);
                }
            });

        }

    };
    mRecyclerView.setAdapter(adapter);

Here is my viewholder class

  public static class FoodViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {

    TextView tvFoodName;
    RatingBar ratingBar;
    ImageView ivFoodPoster;
    TextView tvFoodCategory;
    TextView tvFoodAvailableUpto;
    TextView tvFoodPrice;
    ImageView ivNextArrow;
    ItemClickListener itemClickListener;

    public FoodViewHolder(View v) {
        super(v);
        tvFoodName = (TextView) v.findViewById(R.id.tvName);
        ratingBar = (RatingBar) v.findViewById(R.id.rating_bar);
        ivFoodPoster = (ImageView) v.findViewById(R.id.imgThumb);
        tvFoodCategory = (TextView) v.findViewById(R.id.tvCategory);
        tvFoodAvailableUpto= (TextView) v.findViewById(R.id.tvavailable);
        tvFoodPrice = (TextView) v.findViewById(R.id.tvprice);
        ivNextArrow = (ImageView) v.findViewById(R.id.NextArrow);




        v.setOnClickListener(this);
    }
    public void setItemClickListener(ItemClickListener itemClickListener)
    {
        this.itemClickListener=itemClickListener;
    }
    @Override
    public void onClick(View view) {
        this.itemClickListener.onItemClick(this.getLayoutPosition());
    }
}

Here is my DetailActivity

    public class DetailActivity extends AppCompatActivity {
TextView nameTxt,catTxt,availTxt,priceTxt;
ImageView imageLogo;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_detail);

    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);
    getSupportActionBar().setDisplayShowHomeEnabled(true);
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    nameTxt = (TextView) findViewById(R.id.titleTxt);
    imageLogo = (ImageView) findViewById(R.id.imagelogo);
    catTxt= (TextView) findViewById(R.id.catTxt);
    availTxt = (TextView) findViewById(R.id.availTxt);
    priceTxt = (TextView) findViewById(R.id.pricesTxt);
    //GET INTENT
    Intent i=this.getIntent();
    //RECEIVE DATA
    String title=i.getExtras().getString("TITLE_KEY");
    String cat=i.getExtras().getString("CAT_KEY");
    String avail=i.getExtras().getString("AVAIL_KEY");
    String price=i.getExtras().getString("PRI_KEY");
  //here //  String image=i.getExtras().getString("LOGO_KEY");
    //BIND DATA
    nameTxt.setText(title);
    catTxt.setText(cat);
    availTxt.setText(avail);
    priceTxt.setText(price);
  // here//  Picasso.with(DetailActivity.this).load(image).into(imageLogo);

}

}

KENdi
  • 7,576
  • 2
  • 16
  • 31
samiullah
  • 11
  • 1

2 Answers2

0

okay, since model.getFoodPoster() returns String you can do that:

i.putExtra("IMAGE_KEY",model.getFoodPoster());

However I would suggest you to read about: serializable or parcelable (recommended), using any of them will let you sent the whole object model to another activity!

take a look at:

Atef Hares
  • 4,715
  • 3
  • 29
  • 61
0

In FireBaseAdapter

 viewHolder.tvFoodName.setText(model.getFoodName());
        viewHolder.ratingBar.setRating(model.getFoodRating());
        viewHolder.tvFoodCategory.setText(model.getFoodCategory());
        viewHolder.tvFoodAvailableUpto.setText(model.getFoodAvailableUpto());
        viewHolder.tvFoodPrice.setText(model.getFoodPrice());
        Picasso.with(getActivity().getApplicationContext()).load(model.getFoodPoster()).into(viewHolder.ivFoodPoster);

        viewHolder.setItemClickListener(new ItemClickListener() {
            @Override
            public void onItemClick(int pos) {
                //OPEN DETAI ACTIVITY
                Intent i = new Intent(getContext(), DetailActivity.class);
                i.putExtra("TITLE_KEY",viewHolder.tvFoodName.getText().toString());
                i.putExtra("CAT_KEY",viewHolder.tvFoodCategory.getText().toString());
                i.putExtra("AVAIL_KEY",viewHolder.tvFoodAvailableUpto.getText().toString());
                i.putExtra("PRI_KEY",viewHolder.tvFoodPrice.getText().toString());
             i.putExtra("LOGO_KEY",model.getFoodPoster);

                getContext().startActivity(i);
            }

For DetailActivity,

 Picasso.with(this).load(i.getExtras().getString("LOGO_KEY")).into(imageLogo);
//if you doesn't want any placeholder for it.
//if you want then place it as load().placeholder(R.drawable.anypic).into(imageLogo)
Vishal Verma
  • 41
  • 1
  • 4