Если у меня есть элементы в моем представлении переработчика, то мое приложение не создает sh. Но когда я создаю новую учетную запись, и в представлении утилизатора ничего не отображается, мое приложение вылетает, даже если я сказал ему прекратить прослушивание, если оно пустое. вот где я масштабирую элементы:
eventsPlace.addOnScrollListener(new RecyclerView.OnScrollListener() {
@Override
public void onScrollStateChanged(@NonNull RecyclerView recyclerView, int newState) {
super.onScrollStateChanged(recyclerView, newState);
if(newState == RecyclerView.SCROLL_STATE_IDLE){
View view = snapHelper.findSnapView(layoutManager);
int pos = layoutManager.getPosition(view);
RecyclerView.ViewHolder viewHolder = eventsPlace.findViewHolderForAdapterPosition(pos);
LinearLayout eventparent = viewHolder.itemView.findViewById(R.id.eventParent);
eventparent.animate().scaleY(1).scaleX(1).setDuration(350).setInterpolator(new AccelerateInterpolator()).start();
}
else {
View view = snapHelper.findSnapView(layoutManager);
int pos = layoutManager.getPosition(view);
RecyclerView.ViewHolder viewHolder = eventsPlace.findViewHolderForAdapterPosition(pos);
LinearLayout eventparent = viewHolder.itemView.findViewById(R.id.eventParent);
eventparent.animate().scaleY(0.7f).scaleX(0.7f).setDuration(350).setInterpolator(new AccelerateInterpolator()).start();
}
}
@Override
public void onScrolled(@NonNull RecyclerView recyclerView, int dx, int dy) {
super.onScrolled(recyclerView, dx, dy);
}
});
И чтобы первый масштабировался при запуске приложения, я должен сделать это
databaseReference.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
mEmptyListMessage.setVisibility(adapter.getItemCount() == 0 ? View.VISIBLE : View.GONE);
final Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
//DO Something ater 1ms = 100m
RecyclerView.ViewHolder viewHolderDefault = eventsPlace.findViewHolderForAdapterPosition(0);
LinearLayout eventparentDefault = viewHolderDefault.itemView.findViewById(R.id.eventParent);
eventparentDefault.animate().scaleY(1).scaleX(1).setDuration(350).setInterpolator(new AccelerateInterpolator()).start();
}
},100);
}
@Override
public void onCancelled(@NonNull DatabaseError databaseError) {
}
});
Вот моя трассировка стека:
2020-04-30 15:54:43.053 3507-3507/com.example.carcrashdetection E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.carcrashdetection, PID: 3507
java.lang.NullPointerException: Attempt to read from field 'android.view.View androidx.recyclerview.widget.RecyclerView$ViewHolder.itemView' on a null object reference
at com.example.carcrashdetection.Home$5$1.run(Home.java:298)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:214)
at android.app.ActivityThread.main(ActivityThread.java:7682)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:516)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
Раньше он не обрабатывал sh, так как у меня есть метод остановки прослушивания, но с тех пор, как я добавил обработчик, он зависал, но мне нужно, чтобы он надувал первый элемент при запуске моего приложения. Может кто-нибудь сказать мне, почему это происходит?