Пытаюсь проверить заголовок передаваемый из Firebase. Выдает ошибку, видимо данные еще не успевают подгрузиться. Как это исправить?
66 строчка это if (str1.equals(str2))
TaskAdapter
public class TaskAdapter extends RecyclerView.Adapter<TaskAdapter.TaskViewHolder> {
// Объявление переменных
private FirebaseAuth mAuth;
private FirebaseUser user;
private DatabaseReference myRef;
private Context mCtx;
private List<Task> taskList;
private String photo, author, direction, phone, kolvoMan, kolvoHour, time, date;
public TaskAdapter(Context mCtx, List<Task> taskList) {
this.mCtx = mCtx;
this.taskList = taskList;
}
@Override
public TaskViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
// Инициализация Firebase
mAuth = FirebaseAuth.getInstance();
user = mAuth.getCurrentUser();
myRef = FirebaseDatabase.getInstance().getReference();
return new TaskViewHolder(LayoutInflater.from(parent.getContext()).inflate(R.layout.task, parent, false));
}
@Override
public void onBindViewHolder(final TaskViewHolder holder, final int position) {
final Task task = taskList.get(position);
myRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
String str1 = task.title;
String str2 = "bill";
if (str1.equals(str2))
Toast.makeText(mCtx, "ok", Toast.LENGTH_LONG).show();
// Показ
holder.tvTitle.setText(task.title);
holder.tvPlace.setText(task.place);
holder.tvDesc.setText(task.desc);
holder.tvPhone.setText(task.phone);
holder.tvKolvoMan.setText(task.kolvoMan);
holder.tvKolvoHour.setText(task.kolvoHour);
holder.tvTime.setText(task.time);
holder.tvDate.setText(task.date);
// Обрабатываем нажатия
holder.tvPlace.setOnClickListener (new View.OnClickListener() {
@Override
public void onClick(View v) { dataTransferPlace(position); }
});
holder.itemView.setOnCreateContextMenuListener(new View.OnCreateContextMenuListener() {
@Override
public void onCreateContextMenu(ContextMenu contextMenu, View view, ContextMenu.ContextMenuInfo contextMenuInfo) {
contextMenu.add(holder.getAdapterPosition(),0,0,"Удалить");
}
});
}
@Override
public void onCancelled(DatabaseError databaseError) {
//
}
});
}
// Посылаем ключ нажатого события в активити с полным описанием события
private void dataTransferPlace(int position) {
final Task task = taskList.get(position);
Intent intent = new Intent(mCtx, MapsActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.putExtra("key", task.place);
mCtx.startActivity(intent);
}
@Override
public int getItemCount() {
return taskList.size();
}
// Определение элементов
class TaskViewHolder extends RecyclerView.ViewHolder {
TextView tvTitle, tvPlace, tvDesc, tvPhone, tvTime, tvDate, tvKolvoMan, tvKolvoHour;
public TaskViewHolder(View itemView) {
super(itemView);
tvTitle = itemView.findViewById(R.id.tvTitle);
tvPlace = itemView.findViewById(R.id.tvPlace);
tvDesc = itemView.findViewById(R.id.tvDesc);
tvPhone = itemView.findViewById(R.id.tvPhone);
tvTime = itemView.findViewById(R.id.tvTime);
tvDate = itemView.findViewById(R.id.tvDate);
tvKolvoMan = itemView.findViewById(R.id.tvKolvoMan);
tvKolvoHour = itemView.findViewById(R.id.tvKolvoHour);
}
}
}
Log
04-15 17:03:49.595 24928-24928/com.example.makarov.makarovlist E/AndroidRuntime: FATAL EXCEPTION: main
Process: com.example.makarov.makarovlist, PID: 24928
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean java.lang.String.equals(java.lang.Object)' on a null object reference
at com.example.makarov.makarovlist.TaskAdapter$1.onDataChange(TaskAdapter.java:66)
at com.google.android.gms.internal.zzegf.zza(Unknown Source)
at com.google.android.gms.internal.zzeia.zzbyc(Unknown Source)
at com.google.android.gms.internal.zzeig.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.app.ActivityThread.main(ActivityThread.java:6361)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1063)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:924)
У Вас task.title; возвращает null вот и падает. task вы получаете не из гугла как я понял, а из taskList.get(position);
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Дело такое: при запуске time-managera пустой список в началеНужно туда вставить картинку, которая бы пропадала как только мы что-то добавили
Пытаюсь запустить сервер для сайта на Spring MVC + простой tcp-сервер для общения с удаленными устройствамиНикак не могу запустить tcp-сервер при...