2016-08-17 5 views
1

RecyclerView에서는 표시 항목에 StaggeredLayoutManager를 사용하지만 RefrefreshLAyout으로 새로 고칠 때 나중에 recyclerview에서 스크롤 할 때까지 항목을 표시하지 않습니다. 이는 코드의 일부입니다. RefreshLayout와staggeredgridlayoutmanager는 android에서 새로 고침 한 후 항목을 표시하지 않습니다.

public class NotesListFragment extends Fragment 
    implements SwipeRefreshLayout.OnRefreshListener, OnInternetListener, OnTapInternetDialogListener { 

    private SwipeRefreshLayout notesListRefreshLayout = null; 
    private ListRecyclerView notesListRecyclerView = null; 
    private NotesAdapter notesAdapter = null; 
    private List<Note> notes = null; 

    public NotesListFragment() { 
    // Required empty public constructor 
    } 

    public static NotesListFragment newInstance() { 
    NotesListFragment fragment = new NotesListFragment(); 
    return fragment; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, 
      Bundle savedInstanceState) { 
    return inflater.inflate(R.layout.fragment_notes_list, container, false); 
    } 

    @Override 
    public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { 
    super.onViewCreated(view, savedInstanceState); 
    notesListRefreshLayout = (SwipeRefreshLayout) view.findViewById(R.id.notesListRefreshLayout); 
    notesListRefreshLayout.setOnRefreshListener(this); 
    notesListRecyclerView = (ListRecyclerView) view.findViewById(R.id.notesListRecyclerView); 
    initObjects(); 
    showNotes(notes); 
    } 

    private void initObjects() { 
    notesListRecyclerView.setHasFixedSize(true); 
    if (isTablet) { 
     if (((BaseActivityCompat) getActivity()).getOrientationDevice() == OrientationDevice.LANDSCAPE) { 
     final StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(3, StaggeredGridLayoutManager.VERTICAL); 
     notesListRecyclerView.setLayoutManager(manager); 
     notesListRecyclerView.addItemDecoration(new SpaceGridDecoration(3, 20, true)); 
     } else { 
     final StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL); 
     notesListRecyclerView.setLayoutManager(manager); 
     notesListRecyclerView.addItemDecoration(new SpaceGridDecoration(2, 20, true)); 
     } 
    } else { 
     final StaggeredGridLayoutManager manager = new StaggeredGridLayoutManager(1, StaggeredGridLayoutManager.VERTICAL); 
     notesListRecyclerView.setLayoutManager(manager); 
    } 
    } 

    private void showNotes(List<Note> notes) { 
    if (notesAdapter == null) { 
     notesAdapter = new NotesAdapter(getContext(), notes, advertising, 
     advertisingList, (AppCompatActivity) getActivity(), AdvertisingSection.HOME.getSection()); 
     notesListRecyclerView.setAdapter(notesAdapter); 
     notesAdapter.setOnNoteItemClickListener(onNoteItemClickListener); 
     notesAdapter.setOnNoteActionClickListener(onNoteActionClickListener); 
    } else { 
     notesAdapter.setUpdate(true); 
     notesAdapter.refreshAdapter(notes); 
     notesListRecyclerView.setAdapter(notesAdapter); 
    } 
    } 

    public void onRefresh() { 
    obtainNotesHome(true); 
    } 
} 

나중에 새로 고침가 null 쇼 공간을 구현하고 난 staggeredlayoutmanager와 recyclerview에서 항목 쇼를 스크롤 할 때.

답변

0

코드에 문제가없는 것 같습니다. 자리 표시 자 이미지를 사용해보십시오. 그것은 나에게 효과적이다.

+0

이 단편은 tabhostfragment에 사용됩니다. 탭을 변경하면이 조각으로 돌아오고, recyclerview는 항목이없는 목록을 표시합니다. 디버그 할 때 어댑터가 손실되는 경우 어댑터가 메모리에 존재합니다 byut nothing nothing –