java - RecyclerView Listener 的简单实现

标签 java android-studio android-recyclerview onclicklistener

我希望应用程序在用户点击某个项目时打开一个页面,并向该意图传递一些额外的信息。就是这样。我尝试了大约 7 - 10 个 onclickListener 类型,但没有解决任何问题。我正在发布带有最新实现的适配器类(这不起作用)。 Json 可以工作,Recyclerview 从 url 加载数据和图像没有任何问题。

package byDragosT.myapplication;

import android.content.Context;
import android.content.Intent;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.GridLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;
import android.widget.TextView;

import androidx.annotation.NonNull;
import androidx.constraintlayout.widget.ConstraintLayout;
import androidx.recyclerview.widget.RecyclerView;

import com.squareup.picasso.Picasso;

import java.util.ArrayList;

public class RecipeApiAdapter extends RecyclerView.Adapter<RecipeApiAdapter.RecipeViewHolder> {
    private ArrayList<RecipeItem> recipeItems;
    private Context context;

    public RecipeApiAdapter(ArrayList<RecipeItem> recipeItems, Context context){
        this.recipeItems = recipeItems;
        this.context = context;
    }

    @NonNull
    @Override    //// Mare grija ce layout pui aici - sfat pentru viitor - mi-a luat 4 ore sa gasesc eroarea
    public RecipeViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.recipe_item_in_recyclerview_api, parent, false);
        return new RecipeViewHolder(view);
    }

    @Override
    public void onBindViewHolder(@NonNull RecipeViewHolder holder, int position) {
        final RecipeItem recipeItem = recipeItems.get(position);
        holder.title.setText(recipeItem.getMnameRecipe());
        holder.description.setText(recipeItem.getMdescribeRecipe());

        Picasso.get().load(recipeItem.getItemPictureUrl())
                .into(holder.jpegRecipe);
        System.out.println("image with title: " + holder.title.getText() + "was added in theory");
    }

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

    public static class RecipeViewHolder extends RecyclerView.ViewHolder implements View.OnClickListener {
        public ImageView jpegRecipe;
        public TextView title;
        public TextView description;
        public RelativeLayout containerView;
        public RecyclerView mRecyclerView;

    RecipeViewHolder(View view){
            super(view);
            jpegRecipe = view.findViewById(R.id.picture);
            title = view.findViewById(R.id.recipe_name);
            description = view.findViewById(R.id.ingredients_list);
            containerView = view.findViewById(R.id.recipe_item_container); // vezi aici
            mRecyclerView = view.findViewById(R.id.recyclerView);
    }

        @Override
        public void onClick(View v) {
            int itemPosition = mRecyclerView.getChildLayoutPosition(v);
            RecipeItem current = recipeItems.get(itemPosition);
            Intent intent = new Intent(v.getContext(), RecipeDetailsActivity.class);
            intent.putExtra("name", current.getMnameRecipe());
            v.getContext().startActivity(intent);
        }
    }
}

最佳答案

尝试添加view.setOnClickListener(this);
RecipeViewHolder(查看 View ){ super ( View ); view.setOnClickListener(this); …… }

关于java - RecyclerView Listener 的简单实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62477423/

相关文章:

java - Eclipse & 注入(inject)点 : 的依赖关系不满足或不明确

java - 我如何在 Android 上访问相机胶卷/照片?

android - overdraw 优化 RecyclerView 布局

android - 处理项目长按回收站 View

android - 带有 Scrapped 或附加 View 的 GapWorker 可能不会被回收。 isScrap :false isAttached:true

java - 通过字符串反序列化解析kafka protobuf事件

java - Java 中的 Microsoft Excel 插件开发

java - 我的 textview 无法在 Android Studio 中工作

Android Gradle 从 apk 中删除资源

java - Android Studio 中默认的 JDK 是 JRE