Данные не загружаются, когда я возвращаюсь к активности - PullRequest
0 голосов
/ 29 мая 2018
public class AllUsersActivity extends AppCompatActivity {

private Toolbar mToolbar;
private RecyclerView mUserRecycler;

private DatabaseReference mAllUsersDatabase;
private DatabaseReference mUserRef;
private FirebaseAuth mAuth;
private FirebaseUser mCurrentUser;
private ArrayList<Users> users_list = new ArrayList<>();
private Users users;
private AllUsersAdapter mAllUsersAdapter;
private LinearLayoutManager linearLayoutManager;
String TAG = " ALL USERS ";


@Override

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_all_users);

    Log.i("ON CREATE METHOD", "ALL USERS");

    mToolbar = (Toolbar) findViewById(R.id.users_app_bar);
    setSupportActionBar(mToolbar);
    getSupportActionBar().setTitle("All Users");
    getSupportActionBar().setDisplayHomeAsUpEnabled(true);

    mAuth = FirebaseAuth.getInstance();
    mCurrentUser = mAuth.getCurrentUser();
    mUserRef = FirebaseDatabase.getInstance().getReference().child("Users").child(mAuth.getCurrentUser().getUid());

    mAllUsersDatabase = FirebaseDatabase.getInstance().getReference().child("Users");
    mAllUsersDatabase.keepSynced(true);


    linearLayoutManager = new LinearLayoutManager(this);
    linearLayoutManager.setStackFromEnd(true);


    mAllUsersAdapter = new AllUsersAdapter(users_list);
    mUserRecycler = (RecyclerView) findViewById(R.id.allusers_recycler_view);
    mUserRecycler.setHasFixedSize(true);
    mUserRecycler.setLayoutManager(linearLayoutManager);
    mUserRecycler.setAdapter(mAllUsersAdapter);


}

@Override
protected void onStart() {
    super.onStart();
    Log.i("ON START METHOD", "ALL USERS");


}


@Override
protected void onPostResume() {
    super.onPostResume();
    Log.i("ON RESUME METHOD", "ALL USERS");
    Get_USER();
    mUserRecycler.setAdapter(mAllUsersAdapter);

}

public void Get_USER() {

    ValueEventListener eventListener = new ValueEventListener() {
        @Override
        public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
            for (DataSnapshot ds : dataSnapshot.getChildren()) {
                String name = ds.child("name").getValue(String.class);
                String thumb_image = ds.child("thumb_image").getValue(String.class);
                //Log.i("TAG", name);
                // Log.i("TAG", thumb_image);
                users = new Users(name, thumbimage);
                users_list.add(users);
            }
        }

        @Override
        public void onCancelled(@NonNull DatabaseError databaseError) {
        }
    };
    mAllUsersDatabase.addListenerForSingleValueEvent(eventListener);
}

}

Я могу получить результат из firebase, но когда я открываю мероприятие в первый раз, я получаю данные, как и ожидалось, на экране, но когда я нажимаю "вверх"кнопка навигации или кнопка «назад» и возвращайтесь к активности, тогда на экране ничего не загружается, пока я вижу данные в журналах.Также, когда я нажимаю кнопку домой и снова возвращаюсь, данные загружаются.Мой код в методе OnResume, но все еще не работает, как ожидалось.Я получаю список всех пользователей, зарегистрированных на Firebase

1 Ответ

0 голосов
/ 29 мая 2018

addListenerForSingleValueEvent используется для однократного чтения данных, используйте addValueEventListener(ValueEventListener), если вы хотите прочитать данные при изменении данных

 // remove **Get_USER** method from onPostResume and add **Get_USER** method at the end of **onCreate**
// and also remove this **mUserRecycler.setAdapter(mAllUsersAdapter)** in onPostResume method 
        public void Get_USER() {

            ValueEventListener eventListener = new ValueEventListener() {
                @Override
                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                    for (DataSnapshot ds : dataSnapshot.getChildren()) {
                        String name = ds.child("name").getValue(String.class);
                        String thumb_image = ds.child("thumb_image").getValue(String.class);
                        //Log.i("TAG", name);
                        // Log.i("TAG", thumb_image);
                        users = new Users(name, thumbimage);
                        users_list.add(users);
                        mAllUsersAdapter.notifyItemInserted(users_list.size() - 1);
                    }
                }

                @Override
                public void onCancelled(@NonNull DatabaseError databaseError) {
                }
            };

           mAllUsersDatabase.addValueEventListener(eventListener);
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...