当前位置: 首页 > 知识库问答 >
问题:

新视图。OnClickListener()灰色->“未连接适配器,跳过布局”错误消息

薛承志
2023-03-14

我从Youtube教程中复制了回收者视图的代码,但对我来说行不通。新视图。OnClickListener()变灰,Android Studio建议用lambda替换。这是我的代码与教程中代码的唯一区别……应用程序运行了,但没有显示布局,因为我收到错误消息E/RecyclerView:没有连接适配器;跳过布局。

我能做些什么来解决这个问题?

这是适配器类:

package com.example.yourfoodweek;

import android.content.Context;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.widget.TextView;
import android.widget.Toast;

import androidx.annotation.NonNull;
import androidx.cardview.widget.CardView;
import androidx.recyclerview.widget.RecyclerView;

import com.bumptech.glide.Glide;

import java.util.ArrayList;

public class MealsRecViewAdapter extends RecyclerView.Adapter<MealsRecViewAdapter.ViewHolder>{
    private static final String TAG = "MealsRecViewAdapter";

    private ArrayList <Food> meals = new ArrayList<>();
    private Context mContext;

    public MealsRecViewAdapter(Context mContext) {
        this.mContext = mContext;
    }

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

    @Override
    public void onBindViewHolder(@NonNull ViewHolder holder, int position) {
        Log.d(TAG, "onBindViewHolder: Called");
        holder.txtName.setText(meals.get(position).getName());
        Glide.with(mContext)
                .asBitmap()
                .load(meals.get(position).getImageUrl())
                .into(holder.imgFood);

        holder.parent.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick (View v){
                Toast.makeText(mContext, meals.get(position).getName() + "Selected", Toast.LENGTH_SHORT).show();
            }
        });
    }

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

    public void setMeals(ArrayList<Food> meals) {
        this.meals = meals;
        notifyDataSetChanged();
    }

    public class ViewHolder extends RecyclerView.ViewHolder{

        private CardView parent;
        private ImageView imgFood;
        private TextView txtName;
        public ViewHolder(@NonNull View itemView){
            super(itemView);
            parent = itemView.findViewById(R.id.parent);
            txtName = itemView.findViewById(R.id.txtMealName);
            imgFood = itemView.findViewById(R.id.imgFood);
        }
    }
}

共有1个答案

柴英锐
2023-03-14

这两个问题完全不同。第一个是建议,意思是如果你不想申请,你可以跳过它。但我不建议这样做。

例如:

(无Lambda)

myButton.setOnClickListener(new View.OnClickListerner(){
    @Override
    void onClick(View v) {
        // do some stuff related to action    
    }
});

(与Lambda)

myButton.setOnClickListener(v -> {
   // do some stuff related to action
})

未连接布局管理器:

如果您的RecyclerView没有任何LayoutManager连接到它,那么它将跳过,因为它不知道如何安排/显示项目。

一些布局经理:

  • 直线布局经理
  • GridLayoutManager
  • 交错边缘布局管理器

如果您想创建自己的LayoutManager,您可以通过扩展类LayoutManager来完成

如何使用它:

....
LinearLayoutManager layoutManager = new LinearLayoutManager();
layoutManager.setOrientation = LinearLayoutManager.HORIZONTAL
myRecyclerViewObj.setLayoutManager(layoutManager);
....

未连接适配器

类似于没有布局管理器,当没有适配器连接到回收器视图时,将显示此内容。为此,您必须使用setAdapter方法设置适配器

例如:

....
MealsRecViewAdapter adapter = new MealsRecViewAdapter(this);
myRecyclerViewObj.setAdapter(adapter);
....
 类似资料:
  • 一切正常,但数据没有显示。 但是当我签入“logcat”时,我发现了这个错误消息: 2021 10月20日11:29:37.387 7327-7327/com。实例myplay E/RecyclerView:未连接适配器;跳过布局 2021-10-20 11:29:37.388 7327-7327/com.example.myplayE/RecyClerView:未连接适配器;跳过布局 主要活动。

  • 图像不显示。在一个SO例子中说要检查适配器中的计数,但我认为它是正确的。我在logcat中得到这个错误 这是代码主活动 这是我的适配器。

  • 我收到以下错误:“RecyclerView:未连接适配器;跳过布局”,但我已连接适配器...我尝试了许多不同的方法,但我无法解决错误。 我正在使用Volley库获取数据。当我启动活动时,只有进度条可见,直到结束,我收到上面的Logcat消息。我在中添加了带有适配器的。你能帮我吗? 这是我的代码: 主活动 地震适配器 MainActivity.xml 地震法。xml

  • 当应用程序启动时,我得到一个空白屏幕,当我检查日志时,我得到:E/回收人员视图:没有连接适配器;跳过布局错误 我不知道为什么?任何想法,它似乎没有附加回收器视图或添加任何数据,我附加了Main活动、DataAdapter和数据类。 主要活动 数据适配器 下面是我的数据类,将从中提取数据 我ncluded.java 收集器和设置器 这是jsonResponse类,在接口中引用 感谢任何帮助。

  • 它给了我“回收站视图:没有连接适配器;跳过布局“错误,但在我看来适配器已正确连接。请帮忙。 我正在移动我的方法,但它不起作用。我在这里寻找答案,但只有错误实现的适配器存在问题。我不知道这里出了什么问题。

  • 我的片段中的回收视图给我这个错误,但我无法弄清楚。关于这个问题有很多问题,但到目前为止,它们都没有解决我的问题。 这是我的片段中的一段代码: