¿Cómo configuro FirebaseAdapter en Android Studio?
Estoy tratando de leer datos en tiempo real desde Firebase en un ArrayAdapter personalizado. Según mi investigación, parece que FirebaseListAdapter ha incorporado una funcionalidad para manejar esto. Sin embargo, no puedo obtener mi código para reconocer la clase FirebaseListAdapter. ¿Cómo consigo que funcione FirebaseListAdapter?
Archivo Gradle 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'
Inicialización de FirebaseAdapterFirebaseListAdapter<Participant> adapter = new FirebaseListAdapter;
Error de mensajesFailed 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
Fragmento con listaimport 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);
}
});}
Adaptador personalizadoimport 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;
}
}
Donde se agregan valoresButton 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);
}
});