Я пытаюсь изменить SpanCount
(количество столбцов в сетке) на GridLayoutManager
между 2 и 3 .
настройка SpanCount
в onCreate()
if (getActivity() != null)
layoutManager = new GridLayoutManager(getActivity(), getPreferenceSpanCount(getActivity()));
получить SpanCount
сохраненный с помощью SharedPreferences
и изменить Layout
(строка элемента RecyclerView
) зависит от SpanCount
:
private int getSpanCount() {
if (getPreferenceSpanCount(getActivity()) == 2) {
return R.layout.pic_items_two;
} else {
return R.layout.picture_item;
}
}
получить SpanCount
сохранено с помощью SharedPreferences
:
public static Integer getPreferenceSpanCount(Context context) {
SharedPreferences sharedPreferences = context.getSharedPreferences(SettingsActivity.SHARED_PREFS_SPAN_COUNT, MODE_PRIVATE);
return sharedPreferences.getInt(SettingsActivity.KEY_SPAN_COUNT, 3);
}
установить SpanCount
при получении данных:
private void refreshContent(Boolean setIsServerFilaire) {
fetchRemoteData(new DataStatus() {
@Override
public void onSuccess(List<Post> posts) {
loading.setVisibility(View.GONE);
pb.setVisibility(View.GONE);
if (adapter == null && getActivity() != null) {
adapter = new MyAdapter(posts, getActivity(), new RecyclerViewClickListener() {
@Override
public void onClick(View view, Post post) {
Intent intent = new Intent(getActivity(), Pop.class);
intent.putExtra("img", post.getImgUrl());
intent.putExtra("cat", "Gamewave");
startActivity(intent);
}
}, getSpanCount());
recyclerView.setAdapter(adapter);
} else {
adapter.getItems().clear();
adapter.getItems().addAll(posts);
adapter.notifyDataSetChanged();
}
}
@Override
public void onError(Exception e) {
slowInternetConnection();
}
}, setIsServerFilaire);
}
все работает нормально, но я получаю много отчетов в консоли Google Play под ANRs & Crashes:
java.lang.NullPointerException: в
maa.app.Fragments.fragmentAnime $ 3.onSuccess (фрагментAnime.java:87)
в maa.app.Fragments.fragmentAnime $ 6.a (фрагментAnime.java:52) в
maa.app.Fragments.fragmentAnime $ 6.onResponse (фрагментAnime.java:2)
на com.android.volley.request.StringRequest.c (StringRequest.java:4)
на com.android.volley.request.StringRequest.a (StringRequest.java:2)
на com.android.volley.ExecutorDelivery $ ResponseDeliveryRunnable.run
(ExecutorDelivery.java:30) на android.os.Handler.handleCallback
(Handler.java:789) на android.os.Handler.dispatchMessage
(Handler.java:98) на android.os.Looper.loop (Looper.java:164) на
android.app.ActivityThread.main (ActivityThread.java:6944) в
java.lang.reflect.Method.invoke (Method.java) в
com.android.internal.os.Zygote $ MethodAndArgsCaller.run
(Zygote.java:327) на com.android.internal.os.ZygoteInit.main
(ZygoteInit.java:1374)