// E:\Apps\Dictionary\app\src\main\java\com\vidyaratna\vdictionary\PendingWordAdapter.javaimport android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import androidx.annotation.NonNull; import androidx.recyclerview.widget.RecyclerView; import com.vidyaratna.vdictionary.models.PendingWord; import java.util.List;/** * RecyclerView Adapter for displaying a list of words pending admin approval. * It also defines a listener interface for handling approval and rejection actions. */ public class PendingWordAdapter extends RecyclerView.Adapter {private List pendingWords; private OnItemActionListener listener;/** * This is the interface that was missing. It defines the callback methods * for when an item’s approve or reject button is clicked. * AdminActivity must implement this interface to handle these actions. */ public interface OnItemActionListener { void onItemApprove(int position); void onItemReject(int position); }// Constructor to initialize the adapter with the list of words and the listener. public PendingWordAdapter(List pendingWords, OnItemActionListener listener) { this.pendingWords = pendingWords; this.listener = listener; }@NonNull @Override public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) { View view = LayoutInflater.from(parent.getContext()) .inflate(R.layout.item_pending_word, parent, false); // Replace with your actual layout file return new ViewHolder(view); }@Override public void onBindViewHolder(@NonNull ViewHolder holder, int position) { PendingWord word = pendingWords.get(position); holder.wordTextView.setText(word.getWord()); holder.meaningTextView.setText(word.getMeaning());// Connect the approve button’s click listener to the interface. holder.approveButton.setOnClickListener(v -> { if (listener != null) { listener.onItemApprove(holder.getAdapterPosition()); } });// Connect the reject button’s click listener to the interface. holder.rejectButton.setOnClickListener(v -> { if (listener != null) { listener.onItemReject(holder.getAdapterPosition()); } }); }@Override public int getItemCount() { return pendingWords.size(); }/** * Inner class for the ViewHolder, which holds the view for each list item. */ public static class ViewHolder extends RecyclerView.ViewHolder { public TextView wordTextView; public TextView meaningTextView; public Button approveButton; public Button rejectButton;public ViewHolder(@NonNull View itemView) { super(itemView); // Initialize views based on your layout file wordTextView = itemView.findViewById(R.id.word_text_view); // Replace with your actual view IDs meaningTextView = itemView.findViewById(R.id.meaning_text_view); // Replace with your actual view IDs approveButton = itemView.findViewById(R.id.approve_button); // Replace with your actual view IDs rejectButton = itemView.findViewById(R.id.reject_button); // Replace with your actual view IDs } } }

Share This Post: