2017-04-13 15 views
0

2つのフラグメントAとBがあります。フラグメントBにはrecyclerviewが含まれており、フラグメントBがロードされたときに移入されます。しかし、フラグメントBで戻ると、フラグメントAに戻りますが、フラグメントBに戻ろうとしますが、リサイクルビューには値が入りません。リサイクルビューは向きが変更された後にのみ挿入されます

奇妙なことは、画面の向きを変更した後に表示されるということです。

フラグメントBに戻ると、recyclerviewにどのようにデータを埋め込むのですか?フラグメントBのonCreateViewにアダプタを設定する

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, 
         Bundle savedInstanceState) 
{ 
    recyclerView = (RecyclerView) view.findViewById(R.id.rvPlaylists); 
    recyclerView.setHasFixedSize(true); 
    layoutManager = new GridLayoutManager(getActivity(),1); 
    recyclerView.setLayoutManager(layoutManager); 
    PlaylistAdapter adapter = new PlaylistAdapter(savedPlaylists); 
    recyclerView.setAdapter(adapter); 
} 

は、アダプタ:断片Bをロード

public class PlaylistAdapter extends 
RecyclerView.Adapter<PlaylistAdapter.ViewHolder> 
{ 
    private Context mContext; 
    private ArrayList<Playlist> mPlaylists; 
    private LayoutInflater mInflater; 

    public PlaylistAdapter(ArrayList<Playlist> playlists) 
    { 
     mPlaylists = playlists; 
    } 

    @Override 
    public ViewHolder onCreateViewHolder(ViewGroup parent, int viewType) 
    { 
     View v = LayoutInflater.from(parent.getContext()).inflate(R.layout.playlist_recyclerview_item, parent, false); 
     return new ViewHolder(v); 
    } 

    @Override 
    public void onBindViewHolder(ViewHolder holder, int position) 
    { 
     Playlist currentPlaylist = mPlaylists.get(position); 
     holder.tvName.setText(currentPlaylist.getName()); 
     holder.btnPlayPlaylist.setOnClickListener(new View.OnClickListener(){ 
      @Override 
      public void onClick(View v) { 
       Log.d("btn clicked","mlk"); 
      } 
     }); 
    } 

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


    public class ViewHolder extends RecyclerView.ViewHolder 
    { 
     public TextView tvName; 
     public ImageButton btnPlayPlaylist; 

     public ViewHolder(View v) 
     { 
      super(v); 
      tvName = (TextView) v.findViewById(R.id.lblPlaylistName); 
      btnPlayPlaylist = (ImageButton) v.findViewById(R.id.btnPlayPlaylist); 
     } 

    } 

public void navigateFromPlaylistFragmentToSavedPlaylistFragment() 
{ 
    getFragmentManager().beginTransaction().replace(R.id.activity_main, new SavedPlaylistFragment()).addToBackStack("navigatefromplaylistfragmenttosavedplaylistfragment") 
      .commit(); 
} 
+0

FragmentTransaction transaction = getFragmentManager()。beginTransaction(); transaction.detach(this).attach(this).commit(); これを試してみてください.... –

+0

私はこれをどこに置くべきかわかりません。私はreplaceメソッドを使ってメインアクティビティにフラグメントをロードしていますが、ロードはうまくいきますが、問題は私のrecyclerviewにデータが格納されていないことです。 – Ferre12

+0

http://stackoverflow.com/questions/23212162/how-to-move-from-one-fragment-to-another-fragment-on-click-of-a-imageview-in-and –

答えて

0

アダプターを初期化した後adapter.notifyDataSetChanged();を呼び出していませんでしたデータを入力します。

+0

それは動作しませんでした。私は、recyclerviewのデータが変更されていないときにも問題があります。 – Ferre12

関連する問題