-2

我的片段中的Recyclerview给了我这个错误,但我无法弄清楚。关于这个问题有很多问题,但目前为止他们都没有解决我的问题。没有附加适配器;跳过片段中的布局错误

这里是我的片段的一段代码:

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 

    View view = inflater.inflate(R.layout.fragment_home, container, false); 
    Toolbar toolbar = (Toolbar) view.findViewById(R.id.toolbar); 
    ((AppCompatActivity)getActivity()).setSupportActionBar(toolbar); 

    recyclerView = (RecyclerView) view.findViewById(R.id.recycler_view); 

    initCollapsingToolbar(); 

    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true)); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(adapter); 

    prepareSectors(); 

    try { 
     Glide.with(this).load(R.drawable.cover).into((ImageView) view.findViewById(R.id.backdrop)); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

    return view; 
    } 
+0

什么是错误?发布它 –

+0

@SriMaharshiManchem我认为错误很明显: 'E/RecyclerView:没有附加适配器;跳过布局“ –

+1

你确定你的'adapter!= null'吗? –

回答

1

你没有将其设置为RecyclerView之前创建adapterinstance

RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true)); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 

    // Your adapter initialization here 
    adapter = new YourAdapter(getActivity(), ....); 
    recyclerView.setAdapter(adapter); 

UPDATE:

从传递context获取LayoutInflater。如下更新您的SectorAdapter代码部分:

public Context mContext; 
public List<Sector> sectorList; 
LayoutInflater layoutInflater; 

public SectorAdapter(Context mContext, List<Sector> sectorList) { 
    this.mContext = mContext; 
    this.sectorList = sectorList; 
    layoutInflater = LayoutInflater.from(mContext); 
} 

@Override 
public MyViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    View itemView = layoutInflater.inflate(R.layout.sector_card, parent, false); 
    return new MyViewHolder(itemView); 
} 

请尝试移动RecyclerView代码onViewCreated()

@Override 
public void onViewCreated(View view, Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 

    sectorList = new ArrayList<>(); 
    prepareSectors(); 

    RecyclerView.LayoutManager mLayoutManager = new GridLayoutManager(getActivity(), 2); 
    recyclerView.setLayoutManager(mLayoutManager); 
    recyclerView.addItemDecoration(new GridSpacingItemDecoration(2, dpToPx(10), true)); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 

    adapter = new SectorAdapter(getActivity(), sectorList); 
    recyclerView.setAdapter(adapter); 
} 

希望这将有助于〜

+0

我在Fragment的OnCreate方法中初始化了我的Adapter。你的建议后我把它移动到OnCreateView,但仍然得到相同的错误 –

+0

张贴您的完整片段代码.. – FAT

+0

你是否通过getActivity()作为上下文....使用适配器= new YourAdapter(getActivity(),....) ; – FAT

1

没有为您的适配器没有任何代码。因此您需要实现适配器并将实例传递给recyclerView。

RecyclerView.LayoutManager mLayoutManager .... 
.... 
// Your adapter initialization here 
adapter = new someAdapter(....); 
recyclerView.setAdapter(adapter); 

这会帮助你!

相关问题