W mojej aplikacji korzystam ze statycznej klasy pomocniczej w której zmieniam zawartość TextView i ImageView. Te widoki podaję odpowiedniej metodzie jako argumenty i potem w zalezności od odpowiedzi serwera Firebase zmieniam je w odpowiedni sposób. Wszystko działa jak należy ale mam jednak wątpliwości czy to dobre rozwiązanie, zgodne z "dobrymi praktykami". Jakby ktoś mógł rzucić okiem na mój fragment kodu i powiedzieć czy powinienem to z jakiegoś powodu zmienić i dlaczego to byłbym wdzięczny.
Ten kod sprawdza w bazie danych czy użytkownik polubił wybrany post i liczbę wszystkich polubień a następnie zmienia wartości podanych widoków zgodnie z tymi informacjami:
public static void getLikesCount(final Context ctx, String postid, final String userid, final TextView textView, final ImageView imageView){
DatabaseReference db = FirebaseDatabase.getInstance().getReference().child("likes").child(postid);
db.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
textView.setText(Long.toString(dataSnapshot.getChildrenCount()));
imageView.setVisibility(View.VISIBLE);
if(dataSnapshot.hasChild(userid)){
imageView.setColorFilter(ctx.getResources().getColor(R.color.YELLOW));
imageView.setTag(true);
}else{
imageView.setColorFilter(ctx.getResources().getColor(R.RED));
imageView.setTag(false);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
I sposób w jaki wywołuję tą metodę w aktywności:
PostHelper.getLikesCount(this,postid,userid,textview,imageview);