簡體   English   中英

問題:E/RecyclerView:沒有連接適配器; 跳過布局

[英]Problem: E/RecyclerView: No adapter attached; skipping layout

我需要一個適配器顯示在回收站視圖中。 但它顯示此錯誤 E/RecyclerView: No adapter attached; 跳過布局。 請幫助我,我是開發新手。 我正在使用 kotlin 和片段

`class UsersDashboardFragment: Fragment() {

private val binding: FragmentUsersDashboardBinding? = null

//local variable adapter
private var adapter: RecyclerView.Adapter<*>? = null

//class variable
private val featuredAdapter:FeaturedAdapter? = null

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    activity?.window?.setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN)

    val binding: FragmentUsersDashboardBinding =
        DataBindingUtil.inflate(
            inflater, R.layout.fragment_users_dashboard, container, false
        )

    featuredRecycler()

    return binding.root

}


private fun featuredRecycler() {
    binding?.featuredRecycler?.setHasFixedSize(true)
    binding?.featuredRecycler?.layoutManager = LinearLayoutManager(context,LinearLayoutManager.HORIZONTAL,false)

    //sut up images in recycler view
    val featuredLocations : ArrayList<FeaturedHelperClass> = ArrayList()
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd sfds dsfsfsdf "))
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd sfds dsfsfsdf "))
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd sfds dsfsfsdf "))

    //call adapter
    adapter = FeaturedAdapter(featuredLocations)
    binding?.featuredRecycler?.adapter = featuredAdapter

}

}`

帶有 RecyclerView 的布局文件

 `<androidx.recyclerview.widget.RecyclerView
                    android:id="@+id/featured_recycler"
                    android:layout_width="match_parent"
                    android:layout_height="280dp"
                    android:layout_toRightOf="@id/featured_backgtound"
                    android:background="@color/govno" />`

適配器 class

`public class FeaturedAdapter extends RecyclerView.Adapter<FeaturedAdapter.FeaturedViewHolder> {

ArrayList<FeaturedHelperClass> featuredLocations;


public FeaturedAdapter(ArrayList<FeaturedHelperClass> featuredLocations) {
    this.featuredLocations = featuredLocations;
}

public static class FeaturedViewHolder extends RecyclerView.ViewHolder {

    ImageView image;
    TextView title,desc;

    public FeaturedViewHolder(@NonNull View itemView) {
        super(itemView);

        image = itemView.findViewById(R.id.featured_image);
        title = itemView.findViewById(R.id.featured_title);
        desc = itemView.findViewById(R.id.featured_desc);

    }


}

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

@Override
public void onBindViewHolder(@NonNull FeaturedViewHolder holder, int position) {

    FeaturedHelperClass featuredHelperClass = featuredLocations.get(position);

    holder.image.setImageResource(featuredHelperClass.getImage());
    holder.title.setText(featuredHelperClass.getTitle());
    holder.desc.setText(featuredHelperClass.getDescription());

}

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

}`

我認為問題出在這段代碼的片段中,但我不知道如何更改它

`

    //sut up images in recycler view
    val featuredLocations : ArrayList<FeaturedHelperClass> = ArrayList()
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd 
    sfds dsfsfsdf "))
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd 
    sfds dsfsfsdf "))
    featuredLocations.add(FeaturedHelperClass(R.drawable.img_1,"Mcdonald's","sdfsdfsdfsdfs sdfd sfds dsfsfsdf "))

    //call adapter
    adapter = FeaturedAdapter(featuredLocations)
    binding?.featuredRecycler?.adapter = featuredAdapter

}`

你一直提到binding? 在你的featuredRecycler function 中,但你從未為這個屬性分配任何東西,所以是這樣的:

binding?.featuredRecycler?.adapter = featuredAdapter

不執行任何操作,因為binding是 null。

這一行:

val binding: FragmentUsersDashboardBinding =

應該改成

binding: FragmentUsersDashboardBinding =

所以你將綁定分配給你的屬性,而不是一些具有相同名稱的局部變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM