如何在我的适配器 Firestore Recyclerview 上正确设置 setOnClickListener

问题描述 投票:0回答:1

我需要在我的 RecyclerView(firestore) 适配器中设置一个 setonclick 侦听器,我要在单击时显示的活动是 RestaurantDetails,我需要单击餐厅卡并定向到包含餐厅详细信息的页面

public class RestaurantAdapter extends FirestoreRecyclerAdapter<Restaurant, RestaurantAdapter.ViewHolder> {

    private Activity activity;

    public RestaurantAdapter(@NonNull FirestoreRecyclerOptions<Restaurant> options, Activity activity) {
        super(options);
        this.activity = activity;
    }

    @NonNull
    @Override
    public ViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.restaurant_card, parent, false);
        return new ViewHolder(view);
    }

    @Override
    protected void onBindViewHolder(@NonNull ViewHolder holder, int position, @NonNull Restaurant model) {
        holder.name.setText(model.getName());
        holder.phone.setText(model.getPhone());
        holder.category.setText(model.getCategory());
        holder.address.setText(model.getAddress());
        // here i should implement it i guess
    }

    static class ViewHolder extends RecyclerView.ViewHolder {
        TextView name, phone, category, address, averageRating;

        public ViewHolder(View itemView) {
            super(itemView);
            name = itemView.findViewById(R.id.textViewName);
            phone = itemView.findViewById(R.id.textViewPhone);
            category = itemView.findViewById(R.id.textViewCategory);
            address = itemView.findViewById(R.id.textViewAddress);
            averageRating = itemView.findViewById(R.id.textViewAverageRating);

        }
    }
}

想过类似的事情,但没有成功

holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            Intent restaurantIntent = new Intent(RestaurantAdapter.this, RestaurantDetailActivity.class);
            startActivity(restaurantIntent);
        }
    });
}
java android google-cloud-firestore onclicklistener
1个回答
0
投票

如果您已经引用了 Activity,请尝试以下操作:

// onBindViewHolder
holder.itemView.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent restaurantIntent = new Intent(activity, RestaurantDetailActivity.class);
            activity.startActivity(restaurantIntent);
        }
    });
}
© www.soinside.com 2019 - 2024. All rights reserved.