作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试将数据从 Firebase 实时读取到自定义 ArrayAdapter 中。根据我的研究,FirebaseListAdapter 似乎内置了处理此问题的功能。但是,我无法让我的代码识别 FirebaseListAdapter 类。如何让 FirebaseListAdapter 工作?
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'
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);
}
});
最佳答案
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/
我正在尝试将数据从 Firebase 实时读取到自定义 ArrayAdapter 中。根据我的研究,FirebaseListAdapter 似乎内置了处理此问题的功能。但是,我无法让我的代码识别 Fi
我想允许用户对数据进行排序和过滤。我有这个 Firebase 适配器的实现,一切都运行良好。当我想使用例如过滤数据时价格,RecyclerView 中的数据没有变化。你能帮忙告诉我哪里做错了吗? 这是
我是一名优秀的程序员,十分优秀!