That fuck shit the fascists are using
at master 72 lines 2.2 kB view raw
1package org.tm.archive.delete; 2 3import android.view.LayoutInflater; 4import android.view.View; 5import android.view.ViewGroup; 6import android.widget.TextView; 7 8import androidx.annotation.NonNull; 9import androidx.core.util.Consumer; 10import androidx.recyclerview.widget.DiffUtil; 11import androidx.recyclerview.widget.ListAdapter; 12import androidx.recyclerview.widget.RecyclerView; 13 14import org.tm.archive.R; 15 16import java.util.Objects; 17 18class DeleteAccountCountryPickerAdapter extends ListAdapter<Country, DeleteAccountCountryPickerAdapter.ViewHolder> { 19 20 private final Callback callback; 21 22 protected DeleteAccountCountryPickerAdapter(@NonNull Callback callback) { 23 super(new CountryDiffCallback()); 24 this.callback = callback; 25 } 26 27 @Override 28 public @NonNull ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { 29 View view = LayoutInflater.from(parent.getContext()) 30 .inflate(R.layout.delete_account_country_adapter_item, parent, false); 31 32 return new ViewHolder(view, position -> callback.onItemSelected(getItem(position))); 33 } 34 35 @Override 36 public void onBindViewHolder(@NonNull ViewHolder holder, int position) { 37 holder.textView.setText(getItem(position).getDisplayName()); 38 } 39 40 static class ViewHolder extends RecyclerView.ViewHolder { 41 42 private final TextView textView; 43 44 public ViewHolder(@NonNull View itemView, @NonNull Consumer<Integer> onItemClickedConsumer) { 45 super(itemView); 46 textView = itemView.findViewById(android.R.id.text1); 47 48 itemView.setOnClickListener(unused -> { 49 if (getAdapterPosition() != RecyclerView.NO_POSITION) { 50 onItemClickedConsumer.accept(getAdapterPosition()); 51 } 52 }); 53 } 54 } 55 56 private static class CountryDiffCallback extends DiffUtil.ItemCallback<Country> { 57 58 @Override 59 public boolean areItemsTheSame(@NonNull Country oldItem, @NonNull Country newItem) { 60 return Objects.equals(oldItem.getCode(), newItem.getCode()); 61 } 62 63 @Override 64 public boolean areContentsTheSame(@NonNull Country oldItem, @NonNull Country newItem) { 65 return Objects.equals(oldItem, newItem); 66 } 67 } 68 69 interface Callback { 70 void onItemSelected(@NonNull Country country); 71 } 72}