2016-08-09 11 views
0

In meinem ViewHolder gemalt habe ich diese Methode ist, dass in dem Adapter aufgerufen, wenn onBindViewHolder:RecyclerView Elemente sind nicht richtig

protected void bindViews(Item item) { 
    dateTextView.setText(item.getDate()); 
    titleTxtView.setText(item.getTitle()); 
    if (item.hasMenu()) { 
     Log.d("tag", "Item " + item.getId() + " has menu"); 
     menuButton.setVisibility(VISIBLE); 
    } else { 
     menuButton.setVisibility(INVISIBLE); 
    } 
} 

Aber es gibt Item s, die nicht Menü hat (die hasMenu() Renditen falsch) aber menuButton wird angezeigt und umgekehrt.

Ich denke, weil das Element Recycling, weil ich 100 Elemente und nur 2 Menü haben. Er druckt:

Artikel 31 hat Menü

Artikel 78 Menü

hat das ok ist. Allerdings kann ich in der App sehen, dass einige andere Artikel zeigen die menuButton und sie sollten nicht.

Sollte ich zwingen, jedes Element neu zu streichen, wenn die menuButton zeigen/verbergen? Wenn ja, wie kann ich es tun?

+1

Verwenden Sie getitemviewtype, um zwei verschiedene Layouts aufzublasen, eines mit Menü und eines ohne Menü. – kgandroid

+0

Fertig, es funktioniert perfekt, danke :) Post es als Antwort. –

+0

Thanks.Glück zu wissen. – kgandroid

Antwort

1

Verwenden public int getItemViewType (int position) und public int getItemCount() zwei verschiedene Layout aufzublasen, eine mit Menü und andere, ohne das Menü.

Verwandte Themen