如本link中所述。我想尝试我的编码应用程序。但是它没有从我的Firebase数据库中检索任何数据。我只是不知道如何解决它。有人可以帮帮我吗。有什么想法,我想念哪里了?
我的firebase数据库如下图所示:-
旋转编码:-
mDatabase = FirebaseDatabase.getInstance().getReference();
mDatabase.keepSynced(true);
mDatabase.child("Advertisement").child(mAuth.getUid()).addValueEventListener(new ValueEventListener()
{
@Override
public void onDataChange(DataSnapshot dataSnapshot)
{
//final List<String> name = new ArrayList<String>();
ArrayList<String> identity = new ArrayList<>();
identity.add(0, "Choose Tuition Centre");
for (DataSnapshot nameSnapshot: dataSnapshot.getChildren())
{
String tuitionName = nameSnapshot.child("adstuitioname").getValue(String.class);
identity.add(tuitionName);
}
ArrayAdapter<String> nameAdapter = new ArrayAdapter<String>(RatingActivity.this, android.R.layout.simple_spinner_item, identity);
nameAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
mName.setAdapter(nameAdapter);
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
mName.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener()
{
@Override
public void onItemSelected(AdapterView<?> parent, View view, int position, long id)
{
if(position==0)
{
//Toast.makeText(getApplicationContext(),"No Item Selected",Toast.LENGTH_LONG).show();
}
else
{
Toast.makeText(getApplicationContext(),parent.getItemAtPosition(position) +" Selected",Toast.LENGTH_SHORT).show();
}
}
@Override
public void onNothingSelected(AdapterView<?> parent)
{
// TODO Auto-generated method stub
}
});
答案 0 :(得分:1)
按如下所示添加侦听器:
DatabaseReference mDatabaseRef =
FirebaseDatabase.getInstance().getReference();
ArrayList<String> list=new ArrayList<>();
mDatabaseRef.child("Advertisement")
.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot snapshot :dataSnapshot.getChildren())
{
Advertisementject advertisement=
snapshot.getValue(Advertisement.class);
//replace Object.class with your class name
//get your key value here from your "Custom class"
// which contains "adstutioname"
// add in list
list.add(advertisement.getAdstutuioname());
}
//set adapter
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
生成这样的类
public class Advertisement{
@SerializedName("adstutuioname")
@Expose
private String adstutuioname;
public String getAdstutuioname() {
return adstutuioname;
}
public void setAdstutuioname(String adstutuioname) {
this.adstutuioname = adstutuioname;
}
}
答案 1 :(得分:0)
我希望问题出在您的getValue()方法上。 Firebase getValue方法返回一个Object,并且您期望使用String。请修改此行以将您的Object转换为String-
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="col-md-12">some test</div>
答案 2 :(得分:0)
不清楚是要阅读一次还是观看Difference between addValueEventListener() and addListenerForSingleValueEvent() of firebase
首先,请查看是否出现数据库错误
@Override
public void onCancelled(DatabaseError databaseError) {
// Toast or print the databaseError, don't ignore it
}
然后查看您要在何处添加侦听器-mDatabase.child("Advertisement").child(mAuth.getUid()).
,它在您的图片中是-LNZ6...
级别的每个元素。
对于该级别,您有一个对象列表,因此您需要使用循环,并且如Firebase网站上的一些示例所示,建议您创建一个对象,但仍可以使用{{1} }尝试使用某个字段的方法
但是,如果字段不存在,则您将获得空值,并且适配器无法容纳空值,因此您必须忽略或设置一些默认值。
child