2016-04-01 13 views
1

In meiner Aktivität öffne ich auf Knopfdruck einen Dialog, der eine RecyclerView enthält.Eine RecyclerView in einem Dialoglayout aufladen

Die Schaltfläche zum Schließen ist sichtbar, aber die RecyclerView wird nicht mit Daten gefüllt. Selbst die Methoden onCreateViewHolder(), onBindViewHolder() und getItemCount() von Detailsdapter werden nicht aufgerufen.

Antwort

1

Das Problem ist, dass die Dialog bereits erstellt wird, wenn Sie versuchen, den Adapter zu ändern, aus diesem Grund wird es nicht mit Ihren Daten gefüllt.

Sie haben zwei Möglichkeiten, erstellen Sie Ihre own Dialog die Dialog Klasse erweitern und in onCreate() setzen Sie Ihren Code, um die Liste zu füllen oder fügen Sie adapter.notifyDataSetChanged() nach setAdapter() zu sagen, dass Ihre Daten in der Liste aktualisiert wurde.

1

Ich habe das Problem herausgefunden. Nach dem Festlegen des Layout-Managers in der Recycler-Ansicht funktioniert es einwandfrei.

LinearLayoutManager layoutManager = new LinearLayoutManager(dialog.getContext()); 
     layoutManager.setOrientation(LinearLayoutManager.HORIZONTAL); 
     detailsRecyclerView.setLayoutManager(layoutManager); 
1

Verwenden Sie ein Dialogfragment anstelle von Dialog. Ein Dialogfragment bietet alle Funktionen eines Dialogs und bietet gleichzeitig die Funktionalität eines Fragments.

public class AlertDialogFragment extends DialogFragment { 

    @Override 
    public View onCreateView (LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     //inflate layout with recycler view 
    View v = inflater.inflate(R.layout.details_popup, container, false); 
    RecyclerView detailsRecyclerView = (RecyclerView) getActivity().findViewById(R.id.detailsRecyclerView); 
    DetailsAdapter detailsAdapter = new DetailsAdapter(R.layout.detail_item, feedbackResponseSubList); 
    detailsRecyclerView.setAdapter(detailsAdapter); 
    detailsRecyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); 
    return v; 
} 

public Dialog onCreateDialog(Bundle SavedInstanceState) { 
    //The rest of the code you will get when u search for dialogfragments 
Verwandte Themen