barinsta/app/src/main/java/awais/instagrabber/adapters/StoriesAdapter.java

80 lines
3.0 KiB
Java
Raw Normal View History

2020-07-01 19:08:28 +02:00
package awais.instagrabber.adapters;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.annotation.NonNull;
2020-08-29 10:01:42 +02:00
import androidx.recyclerview.widget.DiffUtil;
import androidx.recyclerview.widget.ListAdapter;
2020-07-01 19:08:28 +02:00
import androidx.recyclerview.widget.RecyclerView;
2020-08-29 10:01:42 +02:00
import awais.instagrabber.databinding.ItemStoryBinding;
2020-07-01 19:08:28 +02:00
import awais.instagrabber.models.StoryModel;
2020-08-29 10:01:42 +02:00
public final class StoriesAdapter extends ListAdapter<StoryModel, StoriesAdapter.StoryViewHolder> {
private final OnItemClickListener onItemClickListener;
private static final DiffUtil.ItemCallback<StoryModel> diffCallback = new DiffUtil.ItemCallback<StoryModel>() {
@Override
public boolean areItemsTheSame(@NonNull final StoryModel oldItem, @NonNull final StoryModel newItem) {
return oldItem.getStoryMediaId().equals(newItem.getStoryMediaId());
}
@Override
public boolean areContentsTheSame(@NonNull final StoryModel oldItem, @NonNull final StoryModel newItem) {
return oldItem.getStoryMediaId().equals(newItem.getStoryMediaId());
}
};
2020-07-01 19:08:28 +02:00
2020-08-29 10:01:42 +02:00
public StoriesAdapter(final OnItemClickListener onItemClickListener) {
super(diffCallback);
this.onItemClickListener = onItemClickListener;
2020-07-01 19:08:28 +02:00
}
@NonNull
@Override
public StoryViewHolder onCreateViewHolder(@NonNull final ViewGroup parent, final int viewType) {
2020-08-29 10:01:42 +02:00
final LayoutInflater layoutInflater = LayoutInflater.from(parent.getContext());
final ItemStoryBinding binding = ItemStoryBinding.inflate(layoutInflater, parent, false);
return new StoryViewHolder(binding);
2020-07-01 19:08:28 +02:00
}
@Override
public void onBindViewHolder(@NonNull final StoryViewHolder holder, final int position) {
2020-08-29 10:01:42 +02:00
final StoryModel storyModel = getItem(position);
holder.bind(storyModel, position, onItemClickListener);
2020-07-01 19:08:28 +02:00
}
2020-08-29 10:01:42 +02:00
public final static class StoryViewHolder extends RecyclerView.ViewHolder {
private final ItemStoryBinding binding;
2020-07-01 19:08:28 +02:00
2020-08-29 10:01:42 +02:00
public StoryViewHolder(final ItemStoryBinding binding) {
super(binding.getRoot());
this.binding = binding;
}
2020-07-01 19:08:28 +02:00
2020-08-29 10:01:42 +02:00
public void bind(final StoryModel model,
final int position,
final OnItemClickListener clickListener) {
if (model == null) return;
model.setPosition(position);
itemView.setTag(model);
itemView.setOnClickListener(v -> {
if (clickListener == null) return;
clickListener.onItemClick(model, position);
});
binding.selectedView.setVisibility(model.isCurrentSlide() ? View.VISIBLE : View.GONE);
binding.icon.setImageURI(model.getStoryUrl());
// Glide.with(itemView).load(model.getStoryUrl())
// .apply(new RequestOptions().override(width, height))
// .into(holder.icon);
}
2020-07-01 19:08:28 +02:00
}
2020-08-29 10:01:42 +02:00
public interface OnItemClickListener {
void onItemClick(StoryModel storyModel, int position);
2020-07-01 19:08:28 +02:00
}
}