68 lines
2.6 KiB
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());
|
|
}
|
|
}
|
|
} |