[Android] Wypelnianie widoków wewnątrz klasy pomocniczej

0

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);
0

Nie wiem czy sam to widzisz, ale ten kod to groch z kapustą. W jednej metodzie pobierasz dane i operujesz bezpośrednio na widokach. Spróbuj oddzielić poszczególne warstwy aplikacji od siebie. Stwórz klasę np. Post która będzie przechowywała informacje o postach w tym oznaczenie polubienia i ilość polubień. Następnie osobno zasilaj obiekty klasy post danymi z firebase i osobno reaguj na zmianę tych wartości poprzez modyfikację widoków.

Poza tym przydałoby się stworzyć lokalną bazę danych, która przechowywałaby dane i umożliwiała działanie aplikacji nawet bez połączenia z Internetem.

1 użytkowników online, w tym zalogowanych: 0, gości: 1