That fuck shit the fascists are using
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}