2015-09-03 5 views
1

У меня есть фрагмент, в котором есть viewpager с tablayout, который состоит из двух вкладок - двух фрагментов.RecyclerView внутри ViewPager Фрагмент не отображается

Дело в том, recyclerview показывает пустой, и я понятия не имею, почему,

Tab Фрагмент Компоновка:.

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    xmlns:tools="http://schemas.android.com/tools" 
    android:orientation="vertical" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <android.support.v7.widget.RecyclerView 
     android:id="@+id/my_recycler_view" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent"/> 
</LinearLayout> 

Tag Фрагмент:

List<OrderListItem> orderList = new ArrayList<>(); 
     orderList.add(new OrderListItem(333, "ABCDE", new Date(), new Date(), false, true)); 

     adapter = new OrderListAdapter(orderList, this.getActivity()); 
     layoutManager = new LinearLayoutManager(this.getActivity(), LinearLayoutManager.VERTICAL, false); 
     myRecyclerView.setLayoutManager(layoutManager); 
     myRecyclerView.setAdapter(adapter); 

адаптер:

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

    private List<OrderListItem> orderList; 
    @LayoutRes 
    private final int layoutRes; 

    private Context context; 
    private final LayoutInflater inflater; 

    public OrderListAdapter(List<OrderListItem> orderList, Context context){ 
     this.orderList = orderList; 
     this.layoutRes = R.layout.order_list_item_layout; 
     this.context = context; 
     inflater = LayoutInflater.from(this.context); 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
     View view = inflater.inflate(layoutRes, parent, false); 
     return new ViewHolder(view); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) { 
     final OrderListItem item = orderList.get(position);  
    } 

    public void setItems(List<OrderListItem> orderList){ 
     this.orderList.clear(); 
     this.orderList.addAll(orderList); 
     notifyDataSetChanged(); 
    } 

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

    public static class ViewHolder extends RecyclerView.ViewHolder { 

     public ViewHolder(View itemView) { 
      super(itemView); 

     } 
    } 
} 

Recy Элемент cleView содержит несколько ярких макетов, поэтому я знаю, есть ли макет ребенка или нет, что это не так. любая идея, почему recyclerview пуст?

edit1: Я знаю, что recyclerview существует, потому что его в телефоне с lolipop, и если я делаю движение в месте переработчика, он показывает мне верхнюю и нижнюю границы прокрутки. но дочерние макеты пустые и пустые и должны быть яркими, как я определен в макете ребенка.

eit2. просто использовал listview с simpleAdapter, и он показывает. там должно быть что-то глючит с с.в.

Edit3: расположение строк (я должен ясно видеть пустой TextView с цветом, к тому же не какое-либо значение выставиться.)

<LinearLayout 
    android:layout_height="match_parent" 
    android:layout_width="match_parent" 
    android:background="@color/black" 
    xmlns:android="http://schemas.android.com/apk/res/android"> 

    <TextView 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:background="@color/material_deep_teal_200" 
     android:text="New Text" 
     android:id="@+id/textView" /> 
</LinearLayout> 

ответ

2

Где логика, в которой вы установили OrderListItem Недвижимость ui? Вы сначала установить ViewHolder компоненты:

public static class ViewHolder extends RecyclerView.ViewHolder { 
    TextView mTitleTv; 
    public ViewHolder(View itemView) { 
     super(itemView); 
     mTitle = itemView.findViewById(R.id.textview_id_in_your_xml_file); 
    } 
} 

А затем установить их в onBindViewHolder:

@Override 
public void onBindViewHolder(ViewHolder holder, int position) { 
    final OrderListItem item = orderList.get(position); 
    holder.mTitleTv.setText(item.getReplaceThisWithAStringProperty); 
} 

EDIT

Если вы должны использовать по умолчанию LinearLayoutManager свойства использовать этот конструктор:

layoutManager = new LinearLayoutManager(getActivity()); 

Вместо этого:

layoutManager = new LinearLayoutManager(this.getActivity(), LinearLayoutManager.VERTICAL, false); 

Добавить размер свойство также фиксируется на RecyclerView:

recyclerView.setHasFixedSize = true; 
+0

я не сделал еще, потому что я не мог установить c hild, чтобы показать. У моего детского макета элемента есть несколько цветов, поэтому я знаю, отображается ли его. На данный момент ничего не задают, но это не главное, если бы это было так, это wud еще не показывало –

+0

, так что любое предложение? –

+0

@ user3806331 отправьте свой XML-файл для ячейки –

2

Изменение:

android:layout_width="match_parent" 
android:layout_height="match_parent" 

в

android:layout_width="50dp" // set yourself 
android:layout_height="50dp" // set yourself 
Смежные вопросы