Как настроить FirebaseAdapter в Android Studio?

Я пытаюсь читать данные в реальном времени из Firebase в пользовательский ArrayAdapter. По моим исследованиям, похоже, что FirebaseListAdapter имеет встроенную функциональность для решения этой проблемы. Однако я не могу заставить свой код распознавать класс FirebaseListAdapter. Как мне заставить FirebaseListAdapter работать?

Gradle File
    apply plugin: 'com.android.application'

android {
    compileSdkVersion 24
    buildToolsVersion "24.0.0"

    defaultConfig {
        applicationId "com.example.quizzingcompanion"
        minSdkVersion 15
        targetSdkVersion 24
        versionCode 1
        versionName "1.0"
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    testCompile 'junit:junit:4.12'
    compile 'com.google.firebase:firebase-database:9.6.0'
    compile 'com.google.firebase:firebase-core:9.6.0'
    compile 'com.google.firebase:firebase-auth:9.6.0'
    compile 'com.android.support:appcompat-v7:24.1.1'
    compile 'com.android.support:design:24.1.1'
    compile 'com.android.support:support-v4:24.1.1'
    compile 'com.firebase:firebase-client-android:2.3.1'
    compile 'com.firebaseui:firebase-ui:0.6.0'
    compile 'com.firebaseui:firebase-ui-storage:0.6.0'
    compile 'com.firebaseui:firebase-ui-database:0.6.0'
}

apply plugin: 'com.google.gms.google-services'
FirebaseAdapter Initialization
FirebaseListAdapter<Participant> adapter = new FirebaseListAdapter;
Сообщения об ошибках
Failed to resolve: com.google.firebase:firebase-auth:9.6.0
Failed to resolve: com.google.firebase:firebase-storage:9.6.0
Failed to resolve: com.google.firebase:firebase-database:9.6.0
Failed to resolve: com.google.android.gms:play-services-auth:9.6.0
Cannot resolve symbol FirebaseListAdapter
Фрагмент со списком
import android.content.Intent;
import android.os.Bundle;
import android.support.design.widget.FloatingActionButton;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ListView;

import java.util.ArrayList;

/**
 * A simple {@link Fragment} subclass.
 */
public class ParticipantFragment extends Fragment {
    private DataSource data;
    DatabaseReference database;
    ArrayList<Participant> participants = new ArrayList<>();

    public ParticipantFragment() {
        data = new DummyDataSource();
        database = FirebaseDatabase.getInstance().getReference();
    }


    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        final View rootView = inflater.inflate(R.layout.content_participants_fragment, container, false);

        FirebaseListAdapter<Participant> adapter = new FirebaseListAdapter;
        ListView listView = (ListView) rootView.findViewById(R.id.participants_list);
        ParticipantAdapter adapter = new ParticipantAdapter(getActivity(), data.getParticipants());
        listView.setAdapter(adapter);

        FloatingActionButton fab = (FloatingActionButton) rootView.findViewById(R.id.participants_fab);
        fab.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
                Intent intent = new Intent(getContext(), NewParticipant.class);
                startActivity(intent);
            }
        });}
Пользовательский адаптер
import android.app.Activity;
import android.media.Image;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

import java.util.ArrayList;

/**
 * Created by Tim on 9/10/2016.
 */
public class ParticipantAdapter extends ArrayAdapter {
    public ParticipantAdapter(Activity context, ArrayList<Participant> participant) {
        super(context, 0, participant);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        View listItemView = convertView;
        if(listItemView == null){
            listItemView = LayoutInflater.from(getContext()).inflate(R.layout.participants_list_item, parent, false);
        }

        Participant currentParticipant = (Participant) getItem(position);

        ImageView participantImage = (ImageView) listItemView.findViewById(R.id.participant_image);
        if(currentParticipant.hasImageValue()){
            participantImage.setImageResource(currentParticipant.getImageID());
        }else{
            participantImage.setImageResource(R.drawable.ic_my_profile);
        }

        TextView name = (TextView) listItemView.findViewById(R.id.participant_name);
        name.setText(currentParticipant.getDisplayName());

        ImageView image = (ImageView) listItemView.findViewById(R.id.participant_role);
        switch (currentParticipant.getRole()){
            case "Official": image.setImageResource(R.drawable.ic_official);
            case "Spectator": image.setImageResource(R.drawable.ic_spectator);
            case "Quizzer": image.setImageResource(R.mipmap.ic_quizzer);
            default: image.setVisibility(View.GONE);
        }

        return listItemView;
    }
}
Где значения добавляются
Button okBtn = (Button) findViewById(R.id.add_participant);
        okBtn.setOnClickListener(new View.OnClickListener() {
            @Override

            public void onClick(View view) {
                DatabaseReference ref = database.child("participants");
                EditText firstName = (EditText)  findViewById(R.id.first_name);
                EditText lastName = (EditText)  findViewById(R.id.last_name);
                Participant newParticipant = new Participant(firstName.getText().toString(),
                                                                lastName.getText().toString(),
                                                                sp.getSelectedItem().toString(),
                                                                sp2.getSelectedItem().toString());
                Map<String, Object> participantValues = newParticipant.toMap();
                ref.push().setValue(participantValues);
            }
        });

Ответы на вопрос(2)

Ваш ответ на вопрос