2016-04-01 15 views
1

私の活動では、ボタンをクリックすると、RecyclerViewがあるダイアログが開きます。ダイアログレイアウト内のRecyclerViewの膨張

final Dialog dialog = new Dialog(MyActivity.this); 
dialog.setTitle("Details"); 
dialog.setContentView(R.layout.details_popup); 
RecyclerView detailsRecyclerView = (RecyclerView) dialog.findViewById(R.id.detailsRecyclerView); 
Button detailsCloseButton = (Button) dialog.findViewById(R.id.detailsCloseButton); 

//feedbackResponseSubList contains n items 

**DetailsAdapter detailsAdapter = new DetailsAdapter(R.layout.detail_item, feedbackResponseSubList); 
detailsRecyclerView.setAdapter(detailsAdapter);** 
detailsCloseButton.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       dialog.dismiss(); 
      } 
     }); 
dialog.show(); 

閉じるボタンは表示されていますが、recyclerViewにデータが入力されていません。 DetailsDapterのonCreateViewHolder()、onBindViewHolder()およびgetItemCount()メソッドも呼び出されません。

答えて

1

問題は、アダプタを変更しようとすると既にDialogが作成されていることです。その理由は、データが入力されていないためです。

は、次の2つのオプション、作成を持っているあなたのDialogクラスを拡張し、onCreate()でリストを作成するか、リスト内のデータが更新されたことを伝えるためにsetAdapter()adapter.notifyDataSetChanged()を追加するようにコードを置くown Dialog

1

問題を把握しました。 recyclerviewでレイアウトマネージャを設定した後、正常に動作します。

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

ダイアログの代わりにダイアログフラグメントを使用します。ダイアログフラグメントは、フラグメントの機能を提供しながらダイアログのすべての機能を提供します。

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 
関連する問題