1

My code isn't returning the timestamp from Firebase and I don't know why. Furthermore, in the private void setupWidgets method in the if else statement timestamp is showing up red and I don't know why--I put ** next to it... Does anyone know why that is if I declared it above? Why am I not getting the timestamp in the TextView?

I have used these two pages as references How to save the current date/time when I add new value to Firebase Realtime Database & Convert ServerValue.TIMESTAMP To date aside from all the videos I've watched, but it's still not coming out right.


PostAdapter.java

    public class ViewHolder extends RecyclerView.ViewHolder {

            public ImageView image_profile, post_image, like, comment, attend_event, save_event, more_options;
            public TextView username, number_of_likes, description, number_of_comments, text_event, text_location, text_date_time,
                    number_of_people_attending_event, timestamp;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                image_profile = itemView.findViewById(R.id.image_profile);
                post_image = itemView.findViewById(R.id.post_image);
                like = itemView.findViewById(R.id.like);
                comment = itemView.findViewById(R.id.comment);
                username = itemView.findViewById(R.id.username);
                number_of_likes = itemView.findViewById(R.id.number_of_likes);
                description = itemView.findViewById(R.id.description);
                number_of_comments = itemView.findViewById(R.id.number_of_comments);
                timestamp = itemView.findViewById(R.id.timestamp);

            }
        }

    private void saveTimestamp() {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
            Map map = new HashMap();
            map.put("timestamp", ServerValue.TIMESTAMP);
            reference.child("Posts").updateChildren(map);
        }

        private void setupWidgets() {
            String timestampDifference = getTimestampDifference();
            if (!timestampDifference.equals("0")) {
                **timestamp.setText(timestampDifference + " days ago");
            } else {
                **timestamp.setText("Today");
            }
        }

        //Timestamp
        private String getTimestampDifference() {
            String difference = "";
            Calendar calendar = Calendar.getInstance();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss");
            Date today = calendar.getTime();
            simpleDateFormat.format(today);
            Date timestamp;
            final String dateTime = simpleDateFormat.format(calendar.getTime());
            try {
                timestamp = simpleDateFormat.parse(dateTime);
                difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
            } catch (ParseException e) {
                difference = "0";
            }
            return difference;

        }

post_item.xml

<TextView
                android:id="@+id/timestamp"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/description"
                android:layout_marginStart="10dp"
                android:layout_marginBottom="10dp"
                android:text="Have to add a Timestamp" />
PostAdapter.java

    package com.e.events.Adapter;

    public class PostAdapter extends RecyclerView.Adapter<PostAdapter.ViewHolder> {

        public Context mContext;
        public List<Post> mPost;

        private FirebaseUser firebaseUser;

        public PostAdapter(Context mContext, List<Post> mPost) {
            this.mContext = mContext;
            this.mPost = mPost;
        }

        @NonNull
        @Override
        public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            View view = LayoutInflater.from(mContext).inflate(R.layout.post_item, parent, false);
            return new PostAdapter.ViewHolder(view);
        }

        @Override
        public void onBindViewHolder(@NonNull final ViewHolder holder, int position) {

            firebaseUser = FirebaseAuth.getInstance().getCurrentUser();
            final Post post = mPost.get(position);

            Glide.with(mContext).load(post.getPostimage())
                    .apply(new RequestOptions().placeholder(R.drawable.placeholderimg))
                    .into(holder.post_image);

            if ("".equals(post.getDescription())) {
                holder.description.setVisibility(View.GONE);
            } else {
                holder.description.setVisibility(View.VISIBLE);
                holder.description.setText(post.getDescription());
            }

            if ("".equals(post.getText_event())) {
                holder.text_event.setVisibility(View.GONE);
            } else {
                holder.text_event.setVisibility(View.VISIBLE);
                holder.text_event.setText(post.getText_event());
            }

            if ("".equals(post.getText_location())) {
                holder.text_location.setVisibility(View.GONE);
            } else {
                holder.text_location.setVisibility(View.VISIBLE);
                holder.text_location.setText(post.getText_location());
            }

            if ("".equals(post.getText_date_time())) {
                holder.text_date_time.setVisibility(View.GONE);
            } else {
                holder.text_date_time.setVisibility(View.VISIBLE);
                holder.text_date_time.setText(post.getText_date_time());
            }
            publisherInfo(holder.image_profile, holder.username, post.getPublisher());
            eventLiked(post.getPostid(), holder.like);
            number_of_likes(holder.number_of_likes, post.getPostid());

            holder.like.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (holder.like.getTag().equals("like")) {
                        FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
                                .child(firebaseUser.getUid()).setValue(true);
                        addNotification(post.getPublisher(), post.getPostid());
                    } else {
                        FirebaseDatabase.getInstance().getReference().child("Likes").child(post.getPostid())
                                .child(firebaseUser.getUid()).removeValue();
                    }
                }
            });

            publisherInfo(holder.image_profile, holder.username, post.getPublisher());
            attending_event(post.getPostid(), holder.attend_event);
            number_of_people_attending_event(holder.number_of_people_attending_event, post.getPostid());
            getComments(post.getPostid(), holder.number_of_comments);
            isSaved(post.getPostid(), holder.save_event);

            holder.attend_event.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (holder.attend_event.getTag().equals("attend_event")) {
                        FirebaseDatabase.getInstance().getReference().child("Attending Event").child(firebaseUser.getUid())
                                .child(post.getPostid()).setValue(true);
                    } else {
                        FirebaseDatabase.getInstance().getReference().child("Attending Event").child(firebaseUser.getUid())
                                .child(post.getPostid()).removeValue();
                    }
                }
            });

            holder.image_profile.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
                    editor.putString("profileid", post.getPublisher());
                    editor.apply();

                    ((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            new ProfileFragment()).commit();
                }
            });

            holder.username.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
                    editor.putString("profileid", post.getPublisher());
                    editor.apply();

                    ((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            new ProfileFragment()).commit();
                }
            });

            holder.post_image.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    SharedPreferences.Editor editor = mContext.getSharedPreferences("PREFS", Context.MODE_PRIVATE).edit();
                    editor.putString("postid", post.getPostid());
                    editor.apply();

                    ((FragmentActivity) mContext).getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container,
                            new PostDetailFragment()).commit();
                }
            });

            holder.save_event.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (holder.save_event.getTag().equals("save")) {
                        FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
                                .child(post.getPostid()).setValue(true);
                    } else {
                        FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid())
                                .child(post.getPostid()).removeValue();
                    }
                }
            });

            holder.attend_event.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if (holder.attend_event.getTag().equals("attend event")) {
                        FirebaseDatabase.getInstance().getReference().child("Attending Event").child(post.getPostid())
                                .child(firebaseUser.getUid()).setValue(true);
                    } else {
                        FirebaseDatabase.getInstance().getReference().child("Attending Event").child(post.getPostid())
                                .child(firebaseUser.getUid()).removeValue();
                    }
                }
            });

            holder.comment.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(mContext, CommentsActivity.class);
                    intent.putExtra("postid", post.getPostid());
                    intent.putExtra("publisherid", post.getPublisher());
                    mContext.startActivity(intent);
                }
            });

            holder.number_of_comments.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(mContext, CommentsActivity.class);
                    intent.putExtra("postid", post.getPostid());
                    intent.putExtra("publisherid", post.getPublisher());
                    mContext.startActivity(intent);
                }
            });

            holder.number_of_likes.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent = new Intent(mContext, FollowersActivity.class);
                    intent.putExtra("id", post.getPostid());
                    intent.putExtra("title", "likes");
                    mContext.startActivity(intent);
                }
            });

            holder.more_options.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    PopupMenu popupMenu = new PopupMenu(mContext, v);
                    popupMenu.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() {
                        @Override
                        public boolean onMenuItemClick(MenuItem item) {
                            switch (item.getItemId()) {
                                case R.id.edit_event:
                                    editPost(post.getPostid());
                                    return true;
                                case R.id.delete_event:
                                    FirebaseDatabase.getInstance().getReference("Posts").child(post.getPostid()).removeValue()
                                            .addOnCompleteListener(new OnCompleteListener<Void>() {
                                                @Override
                                                public void onComplete(@NonNull Task<Void> task) {
                                                    if (task.isSuccessful()) {
                                                        Toast.makeText(mContext, "Event deleted", Toast.LENGTH_SHORT).show();
                                                    }
                                                }
                                            });
                                    return true;
                                case R.id.report_event:
                                    Toast.makeText(mContext, "Event has been reported", Toast.LENGTH_SHORT).show();
                                    return true;
                                default:
                                    return false;
                            }
                        }
                    });
                    popupMenu.inflate(R.menu.event_menu);
                    if (!post.getPublisher().equals(firebaseUser.getUid())) {
                        popupMenu.getMenu().findItem(R.id.edit_event).setVisible(false);
                        popupMenu.getMenu().findItem(R.id.delete_event).setVisible(false);
                    }
                    popupMenu.show();
                }
            });

        }

        @Override
        public int getItemCount() {
            if (mPost != null) {
                return mPost.size();
            } else {
                return 0;
            }

        }

        public class ViewHolder extends RecyclerView.ViewHolder {

            public ImageView image_profile, post_image, like, comment, attend_event, save_event, more_options;
            public TextView username, number_of_likes, description, number_of_comments, text_event, text_location, text_date_time,
                    number_of_people_attending_event, timestamp;

            public ViewHolder(@NonNull View itemView) {
                super(itemView);

                image_profile = itemView.findViewById(R.id.image_profile);
                post_image = itemView.findViewById(R.id.post_image);
                like = itemView.findViewById(R.id.like);
                comment = itemView.findViewById(R.id.comment);
                username = itemView.findViewById(R.id.username);
                number_of_likes = itemView.findViewById(R.id.number_of_likes);
                description = itemView.findViewById(R.id.description);
                number_of_comments = itemView.findViewById(R.id.number_of_comments);
                text_event = itemView.findViewById(R.id.text_event);
                text_location = itemView.findViewById(R.id.text_location);
                text_date_time = itemView.findViewById(R.id.text_date_time);
                attend_event = itemView.findViewById(R.id.attend_event);
                number_of_people_attending_event = itemView.findViewById(R.id.number_of_people_attending_event);
                save_event = itemView.findViewById(R.id.save_event);
                more_options = itemView.findViewById(R.id.more_options);
                timestamp = itemView.findViewById(R.id.timestamp);

            }
        }

        private void saveTimestamp() {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference();
            Map map = new HashMap();
            map.put("timestamp", ServerValue.TIMESTAMP);
            reference.child("Posts").updateChildren(map);
        }

        //Set words for the timestamp "Today" or "___ days ago"
        private void setupWidgets() {
            String timestampDifference = getTimestampDifference();
            if (!timestampDifference.equals("0")) {
                timestamp.setText(timestampDifference + " days ago");
            } else {
                timestamp.setText("Today");
            }
        }

        //Timestamp
        private String getTimestampDifference() {
            Log.d(TAG, "getTimestampDifference: getting timestamp difference");

            String difference = "";
            Calendar calendar = Calendar.getInstance();
            SimpleDateFormat simpleDateFormat = new SimpleDateFormat("dd-MMM-yyyy HH:mm:ss", Locale.US);
            simpleDateFormat.setTimeZone(TimeZone.getTimeZone("America/Chicago"));
            Date today = calendar.getTime();
            simpleDateFormat.format(today);
            Date timestamp;
            final String dateTime = simpleDateFormat.format(calendar.getTime());
            try {
                timestamp = simpleDateFormat.parse(dateTime);
                difference = String.valueOf(Math.round(((today.getTime() - timestamp.getTime()) / 1000 / 60 / 60 / 24)));
            } catch (ParseException e) {
                difference = "0";
            }
            return difference;

        }

        private void getComments(String postid, final TextView comments) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Comments").child(postid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    comments.setText(dataSnapshot.getChildrenCount() + "");
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void eventLiked(String postid, final ImageView imageView) {

            final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(postid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.child(firebaseUser.getUid()).exists()) {
                        imageView.setImageResource(R.drawable.ic_event_liked_aqua_fill);
                        imageView.setTag("liked");
                    } else {
                        imageView.setImageResource(R.drawable.ic_favorite_heart_hollow);
                        imageView.setTag("like");
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void addNotification(final String userid, final String postid) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Notifications").child(userid);

            HashMap<String, Object> hashMap = new HashMap<>();

            hashMap.put("userid", firebaseUser.getUid());
            hashMap.put("comment", "liked your Event");
            hashMap.put("postid", postid);
            hashMap.put("ispost", true);

            reference.push().setValue(hashMap);
        }

        private void number_of_likes(final TextView likes, String postid) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Likes").child(postid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    likes.setText(dataSnapshot.getChildrenCount() + "");
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void attending_event(String postid, final ImageView imageView) {

            final FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Attending Event").child(postid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.child(firebaseUser.getUid()).exists()) {
                        imageView.setImageResource(R.drawable.ic_person_attending_event_light_green);
                        imageView.setTag("attending event");
                    } else {
                        imageView.setImageResource(R.drawable.ic_person_plus_black_attend_event);
                        imageView.setTag("attend event");
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void number_of_people_attending_event(final TextView number_of_people, String postid) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Attending Event").child(postid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    number_of_people.setText(dataSnapshot.getChildrenCount() + "");
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void publisherInfo(final ImageView image_profile, final TextView username, String userid) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Users").child(userid);

            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    User user = dataSnapshot.getValue(User.class);
                    Glide.with(mContext).load(user.getImageurl()).into(image_profile);
                    username.setText(user.getUsername());

                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        private void isSaved(final String postid, final ImageView imageView) {
            FirebaseUser firebaseUser = FirebaseAuth.getInstance().getCurrentUser();

            DatabaseReference reference = FirebaseDatabase.getInstance().getReference().child("Saves").child(firebaseUser.getUid());
            reference.addValueEventListener(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    if (dataSnapshot.child(postid).exists()) {
                        imageView.setImageResource(R.drawable.ic_bookmark_darker_version);
                        imageView.setTag("saved");
                    } else {
                        imageView.setImageResource(R.drawable.ic_save_hollow);
                        imageView.setTag("save");
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }

        //Editing Event
        private void editPost(final String postid) {
            AlertDialog.Builder alertDialog = new AlertDialog.Builder(mContext);
            alertDialog.setTitle("Edit Event");

            final EditText editText = new EditText(mContext);
            LinearLayout.LayoutParams linearLayoutParams = new LinearLayout.LayoutParams(
                    LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

            editText.setLayoutParams(linearLayoutParams);
            alertDialog.setView(editText);

            getText(postid, editText);

            alertDialog.setPositiveButton("Edit",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {

                            HashMap<String, Object> hashMap = new HashMap<>();
                            hashMap.put("description", editText.getText().toString());

                            FirebaseDatabase.getInstance().getReference("Posts")
                                    .child(postid).updateChildren(hashMap);
                        }
                    });
            alertDialog.setNegativeButton("Cancel",
                    new DialogInterface.OnClickListener() {
                        @Override
                        public void onClick(DialogInterface dialog, int which) {
                            dialog.dismiss();
                        }
                    });
            alertDialog.show();
        }

        private void getText(String postid, final EditText editText) {
            DatabaseReference reference = FirebaseDatabase.getInstance().getReference("Posts").child(postid);
            reference.addListenerForSingleValueEvent(new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    editText.setText(dataSnapshot.getValue(Post.class).getDescription());
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {

                }
            });
        }
    }


[![screenshot_timestamp][1]][1]


  [1]: https://i.stack.imgur.com/TZfI7.png


  • As an aside consider throwing away the long outmoded and notoriously troublesome `SimpleDateFormat` and friends, and adding [ThreeTenABP](https://github.com/JakeWharton/ThreeTenABP) to your Android project in order to use `java.time`, the modern Java date and time API. It is so much nicer to work with. – Ole V.V. Dec 03 '19 at 19:55
  • @OleV.V. okay so what do I do? Just add the library and initialize it in my onCreate method and that's it? Nothing else? Because I did that and nothing happened. My logcat is outputting some timesnaps, but I don't know how to translate that to my app. – johnnnnyyyy Dec 03 '19 at 20:31
  • What do you mean through "in the if else statement timestamp is showing up red"? Do you have any errors when compiling? Please also respond with @AlexMamo – Alex Mamo Dec 04 '19 at 07:09
  • Sorry, when I said *As an aside*, i didn’t mean that this alone would solve your problem. My intention was that you rewrite your code using the classes from the library so you no longer need the old and troublesome `Calendar`, `SimpleDateFormat` and `Date`. I don’t know Firebase, so cannot tell you how you go about storing and retrieving there. – Ole V.V. Dec 04 '19 at 09:09
  • What difference do you think that you `getTimestampDifference` method calculates? As far as I can see it will never give any other result than `0`. – Ole V.V. Dec 04 '19 at 09:10
  • If you want to follow or just try the java.time way, you may start out from [the Oracle Date Time tutorial](https://docs.oracle.com/javase/tutorial/datetime/). – Ole V.V. Dec 04 '19 at 15:06
  • @AlexMamo the variable ```timestamp``` which I declared above in the ```timestamp.setText(timestampDifference + " days ago");``` and ```timestamp.setText("Today");``` is showing up in red and if I declared it, I don't know why that is... It doesn't build if the variable is in red... It says "Cannot find symbol variable ```timestamp```". Why is that if I declared it above? – johnnnnyyyy Dec 04 '19 at 15:39
  • @OleV.V. well, my hope was that it would calculate today's date and the date that I user uploads the photo to Firebase and give me a result of how many days / hours ago the photo was uploaded to the database. Does my code not reflect what my intentions are? – johnnnnyyyy Dec 04 '19 at 15:44
  • @johnnnnyyyy In no way. You are comparing two times that both ultimately come from the same `Calendar` object, so they are likely the same or very close. I see nothing in your method getting data from the database. – Ole V.V. Dec 04 '19 at 15:47
  • @OleV.V. I just added a ```sameTimestamp``` method. Is that better? Help please, I'm legit working on this timestamp for the first time. – johnnnnyyyy Dec 04 '19 at 15:50
  • Show us a screenshot on how your error really looks like. – Alex Mamo Dec 04 '19 at 15:57
  • @AlexMamo I added the image at the very bottom of the text. The ```timestamp``` is in red and I don't know why if I declared it above, just like you can see in my code. What do I have to do to fix it? – johnnnnyyyy Dec 04 '19 at 16:38
  • Oh, I understand now. That should be a TextView. Should me how it is defined in your code. – Alex Mamo Dec 04 '19 at 16:43
  • @AlexMamo if you mean the xml file, just uploaded it. Or are you referring to something else? – johnnnnyyyy Dec 04 '19 at 16:52
  • In this line: `timestamp.setText("Today");`, `timestamp` should be a TextView object. Should me how it is defined in your code. – Alex Mamo Dec 04 '19 at 16:55
  • @AlexMamo but didn't I already do that with this line of code ```timestamp = itemView.findViewById(R.id.timestamp);```? – johnnnnyyyy Dec 04 '19 at 17:02
  • Please add the content of your entire class. – Alex Mamo Dec 04 '19 at 17:05
  • @AlexMamo okay, I did it. – johnnnnyyyy Dec 04 '19 at 17:13
  • Ok, I'll write you an answer. – Alex Mamo Dec 04 '19 at 17:40
  • @AlexMamo it got rid of it not being able to find the TextView variable, but not getting back a ```timestamp```. Any idea how I can fix that? – johnnnnyyyy Dec 04 '19 at 18:04

1 Answers1

1

You are getting that error because you are trying to use a variable that has no visibility in setupWidgets() method. Your timestamp variable is visible only inside your ViewHolder class. That's its scope. See, you can use that variable only in the constructor you cannot use outside the class. To solve this, you either move those metods inside your ViewHolder class or you pass it as an argument when calling them.

Alex Mamo
  • 130,605
  • 17
  • 163
  • 193
  • Okay, so I placed the methods ```saveTimestamp```, ```setupWidgets```, and ```getTimestampDifference``` inside of the ```ViewHolder``` class, which has taken care of the ```timestamp``` variable showing up in red, but still not getting back a ```timestamp``` for my photos. Do you know why that is? – johnnnnyyyy Dec 04 '19 at 17:55
  • There are really a bit too many lines of code to reasonably be able to find a solution. Please isolate the problem and edit/post another fresh question using its own [MCVE](https://stackoverflow.com/help/mcve), so I and other Firebase developers can help you, in this way you increase your chances of being helped. – Alex Mamo Dec 04 '19 at 18:08
  • Thanks for bearing with me. I will post a new question and see if someone can help out. Thanks for everything! @Alex Mamo – johnnnnyyyy Dec 04 '19 at 18:15