我的Firebase RealtimeDatabase包含一个名为Records在该表中有FirebaseUser Uid,在每个Uid中有日期,在每个日期中有一个产品列表。这是一个来自firebase控制台的示例。
在一个名为DailyTableActivity的活动中,有一个提示到DatePickerDialog的按钮和一个ListView元素,该元素应该为连接的用户显示对话框中特定日期(或当前日期)的产品。
这是类产品
import java.util.Comparator;
public class Product {
public Product() {
}
private String id;
private String Name;
private double Cal;
private double Carb;
private double Prot;
private double Fat;
private String Unit;
private int Def;
public Product(String name, int cal, int carb, int prot, int fat, String unit, int def,String id) {
Name = name;
Cal = cal;
Carb = carb;
Prot = prot;
Fat = fat;
Unit = unit;
Def = def;
this.id=id;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getName() {
return Name;
}
public void setName(String name) {
Name = name;
}
public double getCal() {
return Cal;
}
public void setCal(double cal) {
Cal = cal;
}
public double getCarb() {
return Carb;
}
public void setCarb(double carb) {
Carb = carb;
}
public double getProt() {
return Prot;
}
public void setProt(double prot) {
Prot = prot;
}
public double getFat() {
return Fat;
}
public void setFat(double fat) {
Fat = fat;
}
public String getUnit() {
return Unit;
}
public void setUnit(String unit) {
Unit = unit;
}
public int getDef() {
return Def;
}
public void setDef(int def) {
Def = def;
}
public static Comparator<Product> productComparator= new Comparator<Product>() {
@Override
public int compare(Product o1, Product o2) {
return o1.getName().toLowerCase().compareTo(o2.getName().toLowerCase());
}
};
}
这是我读取数据的代码:
public void getRecordOfDate( String date , final DataStatus dataStatus)
{
final String currId= FirebaseAuth.getInstance().getCurrentUser().getUid();
date="D_"+date;
DatabaseReference recordsOfUser=FirebaseDatabase.getInstance().getReference().child("records").child(currId);
DatabaseReference dateRef=recordsOfUser.child(date);
dateRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
if (snapshot.exists()){
List<String> keys = new ArrayList<>();
for (DataSnapshot keyNode : snapshot.getChildren()) {
products.clear();
keys.add(keyNode.getKey());
Product product = keyNode.getValue(Product.class);
Log.d("DATA_SUCCESS", "Adding product " + product.getName());
products.add(product);
dataStatus.DataIsLoaded(products, keys);
}
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});
}
dataStatus是一个工作良好的接口,这就是为什么我没有在这里包括它。我认为我的主要问题来自日期不存在,然而,即使我选择了一个存在的日期,它不起作用。
String public void getRecordOfDate( String date , final DataStatus dataStatus){
final String currId= FirebaseAuth.getInstance().getCurrentUser().getUid();
date="D_"+date;
DatabaseReference recordsOfUser=FirebaseDatabase.getInstance().getReference().child("records").child(currId);
DatabaseReference dateRef=recordsOfUser.child(date);
dateRef.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(@NonNull @NotNull DataSnapshot snapshot) {
if (snapshot.exists()){
List<String> keys = new ArrayList<>();
if(snapshot.hasChild(date)){
for (DataSnapshot keyNode : snapshot.getChildren()) {
//products.clear();
keys.add(keyNode.getKey());
//Product product = keyNode.getValue(Product.class);
String Name = keyNode.child("name").getValue().toString();
double Cal = Double.parseDouble(keyNode.child("cal").getValue().toString());
double Carb = Double.parseDouble(keyNode.child("carb").getValue().toString());
double Prot = Double.parseDouble(keyNode.child("prot").getValue().toString());
double Fat = Double.parseDouble(keyNode.child("fat").getValue().toString());
String Unit = keyNode.child("unit").getValue().toString();
int Def = Integer.parseInt(keyNode.child("def").getValue().toString());
String Id = keyNode.getKey();
Product product = new Product(Name, Cal, Carb, Prot, Fat, Unit, Def, Id);
Log.d("DATA_SUCCESS", "Adding product " + product.getName());
products.add(product);
dataStatus.DataIsLoaded(products, keys);
}
}else{System.out.print("Date does not exist")}
}
}
@Override
public void onCancelled(@NonNull @NotNull DatabaseError error) {
}
});}
这样试试,希望管用!那么您应该能够操作列表,将数据放置在textview
和类似的东西上。我注释了products.clear()
行,以将列表保存在“local”上,而不是在每次迭代时删除它。如果这对您不起作用,问题一定出在您日期收集方法上,或者在这里date=“d_”+date;
所以我正在写一个代码来获取scanf一个文本文件并返回一个格式化的文本消息日志。我一直在想,当文件扫描行“332982000 20555552002 205551001 7 Webb先生,我能问你一个问题吗?”时,如何在某一点扫描文件中的字符串,并打印E.X点以外的所有字符串我将前4个数字扫描为整数,并将其余写入的文本扫描到从“Mr.Webb”开始的字符数组中。 我尝试使用一个for循环与fsca
在语法文件中的某个时候,我希望ANTLR将我的输入读取为2个标记,而不是一个。在我的源文件中,我有 Lexer消耗了 作为浮动标记。在源文件中的这个特定点上,我希望ANTLR将其读取为 12345(内景) 。(点) 姓名(name) 有没有办法告诉ANTLR它应该在某个给定点忽略浮点类型? 这是我的电流。g4文件: 我用的是https://github.com/antlr/grammars-v4/
这是我的XML源: https://www.ecb.europa.eu/stats/eurofxref/eurofxref-daily.xml 如何获取DKK(丹麦克朗)的最新汇率? 我不想使用foreach并检查货币是否为DKK... 我需要这样的东西: 知道怎么解决这个问题吗?
我有组织。w3c。dom。具有5个节点的节点列表。UUID生成的节点ID。随机UUID() Dom结构: 我需要获取属性id=“value5”的节点之后的所有节点。因此,结果应该包含id=value6和id=value7的节点。 我创建了流 那么,我可以用Java 8流API来实现这一点吗?
问题内容: 我知道 bufio 包中的golang中的特定功能。 Peek返回下一个n个字节, 而不会使阅读器前进 。在下一个读取调用中,字节停止有效。如果Peek返回的字节数少于n个字节,则它还会返回一个错误,解释读取短的原因。如果n大于b的缓冲区大小,则错误为ErrBufferFull。 我需要能够从阅读器读取特定数量的字节,以 使阅读器更先进 。基本上,与上面的功能相同,但是它使阅读器更高级
我有一个SVG文档,其中包含类似于以下内容的节点: 我想做的只是选择