package lu.circl.mispbump.adapters; import android.content.Context; import android.content.res.ColorStateList; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.core.widget.ImageViewCompat; import androidx.recyclerview.widget.RecyclerView; import java.util.List; import lu.circl.mispbump.R; import lu.circl.mispbump.interfaces.OnRecyclerItemClickListener; import lu.circl.mispbump.models.UploadInformation; public class UploadInfoAdapter extends RecyclerView.Adapter { private Context context; private List items; private OnRecyclerItemClickListener onRecyclerPositionClickListener; public UploadInfoAdapter(Context context) { this.context = context; } @NonNull @Override public UploadInfoAdapter.ViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) { View v = LayoutInflater.from(viewGroup.getContext()).inflate(R.layout.row_upload_information, viewGroup, false); return new UploadInfoAdapter.ViewHolder(v); } @Override public void onBindViewHolder(@NonNull final UploadInfoAdapter.ViewHolder holder, final int position) { final UploadInformation item = items.get(position); holder.date.setText(item.getDateString()); holder.orgName.setText(item.getRemote().organisation.getName()); switch (item.getCurrentSyncStatus()) { case COMPLETE: ImageViewCompat.setImageTintList(holder.syncStatus, ColorStateList.valueOf(context.getColor(R.color.status_green))); holder.syncStatus.setImageResource(R.drawable.ic_check_outline); break; case FAILURE: ImageViewCompat.setImageTintList(holder.syncStatus, ColorStateList.valueOf(context.getColor(R.color.status_red))); holder.syncStatus.setImageResource(R.drawable.ic_error_outline); break; case PENDING: ImageViewCompat.setImageTintList(holder.syncStatus, ColorStateList.valueOf(context.getColor(R.color.status_amber))); holder.syncStatus.setImageResource(R.drawable.ic_pending); break; } holder.rootView.setOnClickListener(view -> onRecyclerPositionClickListener.onClick(view, position)); } @Override public int getItemCount() { return items.size(); } public void setItems(List items) { this.items = items; notifyDataSetChanged(); } public void setOnRecyclerPositionClickListener(OnRecyclerItemClickListener onRecyclerPositionClickListener) { this.onRecyclerPositionClickListener = onRecyclerPositionClickListener; } static class ViewHolder extends RecyclerView.ViewHolder { View rootView; ImageView syncStatus; TextView orgName, date; ViewHolder(@NonNull View itemView) { super(itemView); rootView = itemView; orgName = itemView.findViewById(R.id.orgName); date = itemView.findViewById(R.id.date); syncStatus = itemView.findViewById(R.id.syncStatus); } } }