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