Android 如何在OnClick中检查RecycleView多项目视图Id

Android 如何在OnClick中检查RecycleView多项目视图Id,android,adapter,android-recyclerview,android-viewholder,Android,Adapter,Android Recyclerview,Android Viewholder,我想做不同的工作,为不同的回收项目。我为RecycleView创建了自定义OnClickListener,并从我的活动中使用它。但问题是,当我想在单击它的return-1时获取RecycleView Item Id表单时。我无法检查视图Id RecycleView适配器: public class AddFoodAdapter extends RecyclerView.Adapter<AddFoodAdapter.AddFoodApapterVH>{ private

我想做不同的工作,为不同的回收项目。我为RecycleView创建了自定义OnClickListener,并从我的活动中使用它。但问题是,当我想在单击它的return-1时获取RecycleView Item Id表单时。我无法检查视图Id

RecycleView适配器:

    public class AddFoodAdapter extends  RecyclerView.Adapter<AddFoodAdapter.AddFoodApapterVH>{
    private ArrayList<FoodReviewItem> foodList = new ArrayList<>();
    OnItemClickListener onItemClickListener;


    public AddFoodAdapter(){

    }

    @Override
    public AddFoodApapterVH onCreateViewHolder(ViewGroup parent, int viewType) {
        View itemView = LayoutInflater.from(parent.getContext())
                .inflate(R.layout.recycleview_add_food_item, parent, false);

        return new AddFoodApapterVH(itemView);
    }

    @Override
    public void onBindViewHolder(AddFoodApapterVH holder, int position) {
        holder.tvFoodTitle.setText(foodList.get(position).getFoodName());
        holder.tvFoodPrice.setText(foodList.get(position).getFoodPrice());
    }

    public void add(int position,FoodReviewItem foodItem){
        foodList.add(position,foodItem);
        notifyItemInserted(position);
    }
    public void delete(int position){
        foodList.remove(position);
        notifyItemRemoved(position);
    }

    @Override
    public int getItemCount() {
        return foodList.size();
    }

    public class AddFoodApapterVH extends RecyclerView.ViewHolder implements View.OnClickListener{
        public ImageView ivEditFoodItem;
        public TextView tvFoodTitle;
        public RatingBar rbFoodRating;
        public ImageView ivDeleteFoodItem;
        public TextView tvFoodPrice;

        public AddFoodApapterVH(View itemView) {
            super(itemView);

            ivEditFoodItem = (ImageView) itemView.findViewById(R.id.ivEditFoodItem);
            tvFoodTitle = (TextView) itemView.findViewById(R.id.tvAddFoodItemTitle);
            rbFoodRating = (RatingBar) itemView.findViewById(R.id.rbAddFoodItemRating);
            ivDeleteFoodItem = (ImageView) itemView.findViewById(R.id.ivDeleteFoodItem);
            tvFoodPrice = (TextView) itemView.findViewById(R.id.tvAddFoodItemPrice);
            itemView.setOnClickListener(this);
        }

        @Override
        public void onClick(View v) {
            if(onItemClickListener!=null){
                onItemClickListener.onItemClick(v, getAdapterPosition());
            }
        }
    }

    public interface OnItemClickListener {
        public void onItemClick(View view , int position);
    }

    public void SetOnItemClickListener(final OnItemClickListener onItemClickListener){
        this.onItemClickListener = onItemClickListener;
    }

}
    private void setUpFoodItemApapter() {
        foodItemRecyclerView = (RecyclerView) findViewById(R.id.rvFoodItems);
        addFoodAdapter = new AddFoodAdapter();
        final LinearLayoutManager layoutManager = new org.solovyev.android.views.llm.LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        foodItemRecyclerView.setLayoutManager(layoutManager);
        foodItemRecyclerView.addItemDecoration(new DividerItemDecoration(this, null));
        foodItemRecyclerView.setAdapter(addFoodAdapter);
        addFoodAdapter.SetOnItemClickListener(new AddFoodAdapter.OnItemClickListener() {
            @Override
            public void onItemClick(View view, int position) {
                Log.i("getid",""+view.getId()); //return -1
                Log.i("getid",""+R.id.ivDeleteFoodItem); //return id

                // not working
                if(view.getId() == R.id.ivDeleteFoodItem){
                    addFoodAdapter.delete(position);
                }
            }

        });
    }

由于itemViewivDeleteFoodItem和ivEditFoodItem这两个imageView中存在多个视图,因此要获取哪个视图id。如果删除视图,则删除行;如果编辑视图,则编辑项@YounasImageView iv=(ImageView)v在此行中是v还是视图?ImageView iv=(ImageView)视图;//get-ImageViewGet-this error on any item click:java.lang.ClassCastException:android.widget.LinearLayout无法强制转换为android.widget.ImageView使用findviewbyId查找视图,但在此逻辑中,它会删除所有视图的项。
addFoodAdapter.SetOnItemClickListener(new AddFoodAdapter.OnItemClickListener() {
        @Override
        public void onItemClick(View view, int position) {
             ImageView iv = (ImageView)view;// get imageView
             int id = iv.getId();

            if(id == R.id.ivDeleteFoodItem){ 
                addFoodAdapter.delete(position);
            }
        }

    });