Ошибка доступа к базе данных Firebase при использовании addValueEventListener () - PullRequest
0 голосов
/ 01 июня 2018

Я использую Firebase, чтобы получить данные и загрузить их во фрагмент.Фрагмент содержит список, куда я хочу добавить дату с помощью адаптера.Адаптер принимает 3 массива в качестве входных данных для создания настраиваемого списка.

Вот код AttendanceFragment:

public class AttendanceFragment extends Fragment {

    private DatabaseReference reference, attendance, classid, divisionid, studentid, dates;
    private Button attbutton;
    private ListView list;
    private View mainview;
    private Activity activity;
    private ArrayList<String> date = new ArrayList<String>(),
            state = new ArrayList<String>(),
            teacher = new ArrayList<String>();
    private ListAdapter listAdapter;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(R.layout.fragment_attendence,container,false);
    }

    @Override
    public void onStart(){
        super.onStart();

        mainview = this.getView();
        activity = this.getActivity();
        attbutton = mainview.findViewById(R.id.att_per);
        list = mainview.findViewById(R.id.att_main_list);

        reference = FirebaseDatabase.getInstance().getReference();
        attendance = reference.child(KeyStrings.attendance);
        classid = attendance.child(KeyStrings.class1);
        divisionid = classid.child(KeyStrings.division1);
        studentid = divisionid.child(KeyStrings.student1);
        dates = studentid.child("2018-07-06");
        attbutton.setText(dates.getKey());

        studentid.addValueEventListener(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                Toast.makeText(activity, "Does it work?", Toast.LENGTH_LONG).show();
                for(DataSnapshot d1: dataSnapshot.getChildren()){
                    date.add(d1.getKey());
                    state.add(d1.child(KeyStrings.att_status).getValue().toString());
                    teacher.add(d1.child(KeyStrings.att_created_by).getValue().toString());
                }

                listAdapter = new AttendanceAdapter(activity, date, state, teacher);
                list.setAdapter(listAdapter);

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });

    }

}

Код позволяет установить текстовую кнопку с текстом в датах.ключ хранится в Firebase.Таким образом, указание на отсутствие проблем с подключением или разрешением.Но никакой код addValueEventListener не работает.

Выдает следующую ошибку:

Ошибка прослушивания / Attendance / 1 / A / 1: DatabaseError: Разрешение отклонено

Это происходит только для addValueEventListener, и к массивам ничего не добавляется.Событие на самом деле даже не запускается, так как не отображается ни одного тостового сообщения.

Вот код для AttendanceAdapter:

public class AttendanceAdapter extends ArrayAdapter<String>{
    private ArrayList<String> date;
    private ArrayList<String> state;
    private ArrayList<String> teacher;
    private Activity context;

    public AttendanceAdapter(Activity context, ArrayList<String>date, ArrayList<String>state, ArrayList<String>teacher) {
        super(context, R.layout.fragment_attendence, date);
        this.date=date;
        this.state=state;
        this.teacher=teacher;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent){
        LayoutInflater inflater = context.getLayoutInflater();
        View listviewItem = inflater.inflate(R.layout.fragment_attendence,null,true);
        TextView dateview=(TextView)listviewItem.findViewById(R.id.att_list_date);
        TextView stateview=(TextView)listviewItem.findViewById(R.id.att_list_stat);
        TextView teacherview=(TextView)listviewItem.findViewById(R.id.att_list_teacher);

        dateview.setText(date.get(position));
        stateview.setText(state.get(position));
        teacherview.setText(teacher.get(position));
        return listviewItem;
    }
}

РЕДАКТИРОВАТЬ 1

AsЯ сказал ранее, что, вероятно, нет проблем с авторизацией или авторизацией в Firebase.Но вот правила:

{"rules": {".read": true, ".write": true}}

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...