菜单列表评论页面(使用匿名内部类和内部类实现)
时间: 2024-11-15 20:20:11 浏览: 12
菜单列表评论页面通常在Android应用中用于展示菜品及其对应的用户评价。使用匿名内部类或普通内部类来处理点击事件,可以简化代码并避免创建不必要的类。这里是一个简单的示例:
首先,假设我们有一个`Menu`类,包含菜品信息,以及一个`Comment`类,表示一条评论。然后我们可以创建一个`Adapter`,它负责管理菜单项列表和评论:
```java
public class MenuListAdapter extends RecyclerView.Adapter<MenuListAdapter.ViewHolder> {
private List<Menu> menus;
private CommentClickListener commentClickListener;
// ViewHolder用于复用列表项
static class ViewHolder extends RecyclerView.ViewHolder {
TextView titleView;
TextView commentView;
ViewHolder(View itemView) {
super(itemView);
titleView = itemView.findViewById(R.id.title);
commentView = itemView.findViewById(R.id.comment);
}
}
public MenuListAdapter(List<Menu> menus, CommentClickListener listener) {
this.menus = menus;
this.commentClickListener = listener;
}
@NonNull
@Override
public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
View itemView = LayoutInflater.from(parent.getContext())
.inflate(R.layout.menu_item, parent, false);
return new ViewHolder(itemView);
}
@Override
public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
Menu menu = menus.get(position);
holder.titleView.setText(menu.getTitle());
holder.commentView.setText(menu.getComment());
// 使用匿名内部类处理点击事件,因为评论只关联当前条目
holder.itemView.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Comment comment = menu.getComment(); // 获取对应评论
if (commentClickListener != null) {
commentClickListener.onCommentClick(comment); // 调用外部传入的监听器
}
}
});
}
// 其他适配器方法...
}
// 定义接口,用于接收评论点击事件
interface CommentClickListener {
void onCommentClick(Comment comment);
}
```
在这个例子中,`MenuListAdapter`将点击事件委托给外部传入的`CommentClickListener`,通过匿名内部类实现了特定于点击操作的功能。
阅读全文