2016-06-29 9 views
0

Ich verwende Recyclerview, um eine Liste der Artikel in meiner Android-Anwendung anzuzeigen. Ich gebe dem Benutzer die Option, zwischen Liste und Raster zu wechseln. Das funktioniert gut, aber das Raster Layout ist in Ordnung, aber für die Liste ist es nicht gut.So finden Sie den Layout-Typ in Android Recyclerview

Ich möchte ein anderes Layout verwenden, wenn der Benutzer zu List umgeschaltet wird. Bitte sagen Sie mir, wie ich das von Recyclerview erreichen kann.

FYI: - Ich bin mit mRecyclerView.setLayoutManager(mLayoutManager); zwischen Gitter und Liste wechseln

Antwort

1

Sie eine Flagge in Ihrem Adapter hinzufügen und benachrichtigen Sie den Adapter, um die Ansicht zu aktualisieren, wenn Sie Ihre LayoutDataManager ändern.

private static final int TYPE_LINEAR = 0; 
private static final int TYPE_GRID = 1; 

private int type; 

public void setType(int type) { 
    this.type = type; 
    notifyDataSetChanged(); 
} 

@Override 
public int getItemViewType(int position) { 
    return type; 
} 

@Override 
public RecyclerView.ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) { 
    switch (viewType) { 
     case TYPE_LINEAR: 
      return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_linear), null); 
     case TYPE_GRID: 
      return new ViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.item_grid), null); 
    } 
    return null; 
} 

Hoffe, es hilft :)

+0

Danke für die Hilfe. Können Sie mir helfen, wie Sie Typ eingeben Aktivität – Krishna

+0

Fügen Sie einfach den obigen Code zu Ihrem Adapter und rufen Sie 'adapter.setType (TYPE_YOU_WANT); zusammen mit' mRecyclerView.setLayoutManager (MLayoutManager); ' –

+0

Ich bin fertig mit den Änderungen, aber ich bin nicht in der Lage, den Typ in Adapter zu bekommen :( – Krishna

Verwandte Themen