-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); 

這會幫助你!

相關問題