【问题标题】:fragment recyclerview is giving this error E/RecyclerView: No adapter attached; skipping layoutfragment recyclerview 出现此错误 E/RecyclerView: No adapter attach;跳过布局
【发布时间】:2020-10-28 05:09:48
【问题描述】:

我已经尝试了所有方法,但没有任何效果...请提供任何解决方案。如果我使用 listview 它可以完美运行,但在回收站视图上我会遇到错误。

代码如下

首页片段

    recyclerViewOne = view.findViewById(R.id.recyclerViewOne);
    collectionReference = firebaseFirestore.collection("Trending songs");
    recyclerViewOne.setHasFixedSize(true);
    recyclerViewOne.setLayoutManager(new 
    LinearLayoutManager(getActivity(),LinearLayoutManager.HORIZONTAL,false));
    mUpload = new ArrayList<>();
    gridViewHolder = new GridViewHolder(getActivity(), mUpload, new 
    GridViewHolder.ItemClickListeners() {
        @Override
        public void onClicke(GridModel model, int post) {
            ((DashboardActivity) getActivity()).method();
            ((DashboardActivity) getActivity()).playO(post);

        }
    });
    recyclerViewOne.setAdapter(gridViewHolder);

我需要帮助

【问题讨论】:

  • 请分享 GridViewHolder 类
  • onClick 没有 e

标签: android android-studio android-fragments android-recyclerview


【解决方案1】:

根据命名,您正在尝试将 ViewHolder 设置为回收器的适配器。如果是这种情况,那么您应该以正确的方式实现它:扩展 RecyclerView.Adapter 并将该适配器添加到回收器视图的自定义适配器

【讨论】:

    【解决方案2】:

    这是 GridViewHolder

    公共类 GridViewHolder 扩展 RecyclerView.Adapter {

    Context context;
    List<GridModel> gridModels;
    private ItemClickListeners listeners;
    private int selected;
    
    @NonNull
    @Override
    public SongsAdapterViewHolder onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
        View view = LayoutInflater.from(context).inflate(R.layout.grid_item, parent,false);
    
        return new SongsAdapterViewHolder(view);
    }
    
    @Override
    public void onBindViewHolder(@NonNull SongsAdapterViewHolder holder, int position) {
    
        GridModel gridModel = gridModels.get(position);
        holder.mDesc.setText(gridModel.getmDesc());
        holder.mTitle.setText(gridModel.getmTitle());
        String duration = Utility.convertion(Long.parseLong(gridModel.getDuration()));
        Glide.with(context).load(gridModel.imageurl).into(holder.imageurl);
        holder.bind(gridModel, listeners);
    }
    
    public GridViewHolder(Context context, List<GridModel> gridModels, ItemClickListeners listeners) {
        this.context = context;
        this.gridModels = gridModels;
        this.listeners = listeners;
    }
    
    @Override
    public int getItemCount() {
    
        return gridModels.size();
    }
    public class SongsAdapterViewHolder extends RecyclerView.ViewHolder{
    
        TextView mTitle, mDesc;
        ImageView imageurl;
    
        public SongsAdapterViewHolder(@NonNull View itemView) {
            super(itemView);
            mTitle = itemView.findViewById(R.id.gridTitle);
            mDesc= itemView.findViewById(R.id.gridMusician);
            imageurl  = itemView.findViewById(R.id.gridImageView);
        }
    
        public void bind(final GridModel gridModel, final ItemClickListeners listeners) {
            itemView.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    listeners.onClicke(gridModel, getAdapterPosition());
                }
            });
        }
    }
    
    public interface ItemClickListeners {
        void onClicke(GridModel model, int post);
    }
    
    public int getSelected() {
        return selected;
    }
    
    public void setSelected(int selected) {
        this.selected = selected;
    }
    

    }

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-07-19
      • 2021-11-26
      • 2023-01-18
      • 1970-01-01
      • 1970-01-01
      • 2023-03-02
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多