// 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
}
}
}