Проверка данных из Firebase

201
17 апреля 2018, 05:35

Пытаюсь проверить заголовок передаваемый из 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)
Answer 1

У Вас task.title; возвращает null вот и падает. task вы получаете не из гугла как я понял, а из taskList.get(position);

READ ALSO
Как спрятать картинку в android?

Как спрятать картинку в android?

Дело такое: при запуске time-managera пустой список в началеНужно туда вставить картинку, которая бы пропадала как только мы что-то добавили

203
Запуск сайта на Spring MVC и tcp-сервера

Запуск сайта на Spring MVC и tcp-сервера

Пытаюсь запустить сервер для сайта на Spring MVC + простой tcp-сервер для общения с удаленными устройствамиНикак не могу запустить tcp-сервер при...

177
google translate android

google translate android

На сколько мне известно, google translate api - сам по себе платный

161