gpt4 book ai didi

android - 如何在 Android Studio 中设置 FirebaseAdapter?

转载 作者:行者123 更新时间:2023-11-29 15:41:20 25 4
gpt4 key购买 nike

我正在尝试将数据从 Firebase 实时读取到自定义 ArrayAdapter 中。根据我的研究,FirebaseListAdapter 似乎内置了处理此问题的功能。但是,我无法让我的代码识别 FirebaseListAdapter 类。如何让 FirebaseListAdapter 工作?

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'

FirebaseAdapter 初始化

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

带有列表的 fragment

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);
}
});

最佳答案

FirebaseUI readme有这个方便compatibility table :

FirebaseUI  Firebase/Play 
Version Services Version
1.2.0 10.2.0
1.1.1 10.0.0 or 10.0.1
1.0.1 10.0.0 or 10.0.1
1.0.0 9.8.0
0.6.2 9.8.0
0.6.1 9.6.1
0.6.0 9.6.0
0.5.3 9.4.0
0.4.4 9.4.0
0.4.3 9.2.1
0.4.2 9.2.0
0.4.1 9.0.2
0.4.0 9.0.0

因此,为了使用 FirebaseUI 0.6,您必须使用 Firebase/Play Services SDK 9.6。如果您想使用 Firebase/Play Services SDK 9.4,则必须使用 FirebaseUI 0.5。

此外,您还缺少列表适配器的导入语句:

import com.firebase.ui.database.FirebaseListAdapter;

Android Studio 应该已经为您提供了有关此导入的提示。

关于android - 如何在 Android Studio 中设置 FirebaseAdapter?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39782445/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com