2017-01-07 2 views
6

Я только что просмотрел ресайлер, и он не работал, поэтому я поставил точку останова на getItemCount и метод не вызывается. Я никогда не видел, чтобы у кого-то еще была такая проблема, я уверен, что это что-то смехотворно очевидно. Вот мой код.Recycler view not call getItemCount

public class SearchAdapter extends RecyclerView.Adapter<RecyclerView.ViewHolder> { 

private ArrayList<Object> displayList; 

public static class ViewHolder extends RecyclerView.ViewHolder { 
    public ViewHolder(View v) { 
     super(v); 
    } 
} 

public class ErrorSearchItem extends ViewHolder { 
    //this is here if there is no other viewholder 

    public ErrorSearchItem(View view) { 
     super(view); 

    } 
} 

public class HeaderViewHolder extends ViewHolder { 


    public HeaderViewHolder(View view) { 
     super(view); 

    } 
} 



@Override 
public int getItemViewType(int position) { 

    return position; 
} 

public SearchAdapter(ArrayList<Object> displayList) { 
    this.displayList = displayList; 
} 

@Override 
public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    if (displayList.get(viewType) instanceof String){ 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.row_search_title, parent, false); 
     return new HeaderViewHolder(itemView); 
    } 
    else{ //this is for if there is an error and no other xml files match 
     View itemView = LayoutInflater.from(parent.getContext()) 
       .inflate(R.layout.row_error_search_item, parent, false); 
     return new ErrorSearchItem(itemView); 
    } 
} 

@Override 
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) { 

} 


@Override 
public int getItemCount() { 

    return displayList.size(); 
} 

@Override 
public void onAttachedToRecyclerView(RecyclerView recyclerView) { 
    super.onAttachedToRecyclerView(recyclerView); 

} 

} 

редактировать: фрагмент кода:

private RecyclerView recyclerView; 
private SearchAdapter searchAdapter; 

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

    searchAdapter = new SearchAdapter(categorizedArray); 
    recyclerView.setItemAnimator(new DefaultItemAnimator()); 
    recyclerView.setAdapter(searchAdapter); 
+0

Не могли бы вы опубликовать код инициализации вашего ресайклера? –

+0

уверен, что просто добавил, tbh, я на самом деле никогда не думал, что проблема может быть там –

+9

Вы установили какой-либо 'Layout' для вашего recyclerView? Например. 'recyclerView.setLayoutManager (макет)' – Jiyeh

ответ

2

Я знаю, что это совершенно пустяки, но для меня эта проблема решена, когда я изменил RecylerView layout_width и layout_height имущество от match_parent до wrap_content !!.

+0

Трюк спас мое время. Не могу понять, почему это обязательное оберточное содержимое не раскрывается – mg3