Получить дату с Firebase в Recyclerview Android - PullRequest
0 голосов
/ 27 февраля 2019

Я хочу создать программу, которая отображает дату, представленную в базе данных Firebase в реальном времени.В настоящее время моя программа показывает три переменные, которые являются строками в RecyclerView.Я хочу получить дату, представленную в Firebase, а затем сравнить ее с сегодняшней датой.

Я показываю вам свой код:

Основная активность:

public class Documentation extends AppCompatActivity {

FirebaseDatabase firebaseDatabase;
FirebaseAuth mAuth;
FirebaseUser user;

DatabaseReference reference;
RecyclerView recyclerView;
ArrayList<Balloon> list;
MyAdapterDoc adapterDoc;


@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);;
    recyclerView=(RecyclerView)findViewById(R.id.recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(this));

    list=new ArrayList<Balloon>();
    firebaseDatabase=FirebaseDatabase.getInstance();
    mAuth=FirebaseAuth.getInstance();
    user=mAuth.getCurrentUser();

    //txt_user.setText(user.getEmail());

    reference= FirebaseDatabase.getInstance().getReference().child(user.getUid());
    reference.addValueEventListener(new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for(DataSnapshot dataSnapshot1:dataSnapshot.getChildren()){
                Balloon b=dataSnapshot1.getValue(Balloon.class);
                list.add(b);
            }
            adapterDoc=new MyAdapterDoc(Documentation.this,list);
            recyclerView.setAdapter(adapterDoc);

        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
            Log.w("Ch3","Failed to read value.", databaseError.toException());

        }
    });

}

MyAdapter:

public class MyAdapterDoc extends RecyclerView.Adapter<MyAdapterDoc.MyViewHolder> {

Context context;
ArrayList<Balloon> balloons;

public MyAdapterDoc(Context c,ArrayList<Balloon> b){
    context=c;
    balloons=b;
}

@NonNull
@Override
public MyViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
    return new MyViewHolder(LayoutInflater.from(context).inflate(R.layout.balloon_item,viewGroup,false));
}

@Override
public void onBindViewHolder(@NonNull MyViewHolder myViewHolder, int i) {
    myViewHolder.license.setText(balloons.get(i).getLicense());
    myViewHolder.cda.setText(balloons.get(i).getCda());
    myViewHolder.cdm.setText(balloons.get(i).getCdm());



}

@Override
public int getItemCount() {
    return balloons.size();
}

class MyViewHolder extends RecyclerView.ViewHolder{
    TextView license,cdm,cda,insurance;

    public MyViewHolder(@NonNull View itemView){
    super(itemView);
    license=(TextView)itemView.findViewById(R.id.txt_license);
    cda=(TextView)itemView.findViewById(R.id.txt_cda);
    cdm=(TextView)itemView.findViewById(R.id.txt_cdm);


    }
}

}

Класс воздушных шаров.В этом коде я добавил страховку объекта, которая является датой, но не уверен, что она верна:

public class Balloon {
private String license,cda,cdm;
//private boolean cda,cdm;
private Date insurance;


public Balloon() {
}

public Balloon(String license, String cda, String cdm) {
    this.license = license;
    this.cda = cda;
    this.cdm = cdm;
    this.insurance = insurance;
}

public String getLicense() {
    return license;
}

public void setLicense(String license) {
    this.license = license;
}

public String getCda() {
    return cda;
}

public void setCda(String cda) {
    this.cda = cda;
}

public String getCdm() {
    return cdm;
}

public void setCdm(String cdm) {
    this.cdm = cdm;
}

public Date getInsurance() {
    return insurance;
}

public void setInsurance(Date insurance) {
    this.insurance = insurance;
}

В Firebase мой документ JSON выглядит так: здесь

Спасибо:)

Ответы [ 2 ]

0 голосов
/ 27 февраля 2019

Лучше использовать метку времени для даты.Но если вы все еще используете String, вы должны преобразовать его в правильный формат даты, используя SimpleDateFormat, например:

SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd", Locale.ENGLISH);
    Date date = sdf.parse(insurance); //pass insurance date String here
    //Now compare this date to current date
0 голосов
/ 27 февраля 2019

В настоящее время моя программа показывает три переменные, которые являются строками в RecyclerView.

На самом деле это не то, как вы должны хранить временную метку в базе данных реального времени Firebase.Правильный способ добавления метки времени объясняется в моем ответе из этой записи и , а не как строки, как вы в настоящее время делаете.

Я хочу получить дату, введенную в Firebase, а затем сравнить ее с сегодняшней датой.

Чтобы решить эту проблему, измените свойство insurance на временную метку, а затем просто получите ее отбазы данных, как вы делаете, а затем просто сравнить с:

Date date = new Date();
long now = date.getTime();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...