barinsta/app/src/main/java/awais/instagrabber/adapters/viewholder/NotificationViewHolder.java

68 lines
2.6 KiB
Java

package awais.instagrabber.adapters.viewholder;
import android.text.Spannable;
import android.text.TextUtils;
import android.view.View;
import android.widget.TextView;
import androidx.recyclerview.widget.RecyclerView;
import awais.instagrabber.R;
import awais.instagrabber.adapters.NotificationsAdapter.OnNotificationClickListener;
import awais.instagrabber.databinding.ItemNotificationBinding;
import awais.instagrabber.models.NotificationModel;
import awais.instagrabber.models.enums.NotificationType;
public final class NotificationViewHolder extends RecyclerView.ViewHolder {
private final ItemNotificationBinding binding;
public NotificationViewHolder(final ItemNotificationBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
public void bind(final NotificationModel model,
final OnNotificationClickListener notificationClickListener) {
if (model == null) return;
itemView.setOnClickListener(v -> {
if (notificationClickListener == null) return;
notificationClickListener.onNotificationClick(model);
});
int text = -1;
CharSequence subtext = null;
switch (model.getType()) {
case LIKE:
text = R.string.liked_notif;
break;
case COMMENT:
text = R.string.comment_notif;
subtext = model.getText();
break;
case MENTION:
text = R.string.mention_notif;
subtext = model.getText();
break;
case FOLLOW:
text = R.string.follow_notif;
break;
case REQUEST:
text = R.string.request_notif;
subtext = model.getText();
break;
}
binding.tvUsername.setText(model.getUsername());
binding.tvComment.setText(text);
binding.tvSubComment.setText(subtext, subtext instanceof Spannable ? TextView.BufferType.SPANNABLE : TextView.BufferType.NORMAL);
// binding.tvSubComment.setMentionClickListener(mentionClickListener);
if (model.getType() != NotificationType.REQUEST) {
binding.tvDate.setText(model.getDateTime());
}
binding.ivProfilePic.setImageURI(model.getProfilePic());
if (TextUtils.isEmpty(model.getPreviewPic())) {
binding.ivPreviewPic.setVisibility(View.GONE);
} else {
binding.ivPreviewPic.setVisibility(View.VISIBLE);
binding.ivPreviewPic.setImageURI(model.getPreviewPic());
}
}
}