4

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

Это будет в основном как временная шкала Facebook - как социальная сеть.

Например: Я хочу получить последние записи из Firebase в пределе 50. После достижения этого предела я загружу следующие 50 данных. Я хотел бы использовать RecyclerView, а не FirebaseRecycler класс.

FirebaseRecyclerAdapter не решает вопрос. Спасибо за помощь. Trully, мне нужны данные loadind, такие как временная шкала facebook в макете точки зрения и загрузка данных Firebase (от 50 до 50. Загрузите 50 данных, достигните предела, загрузите больше данных с нижней маской до 50) базы данных точек.

Не могли бы вы мне помочь?

+0

, что вы пробовали, поделитесь здесь, так что люди могут помочь вам ..... – sushildlh

+0

@sushildlh я не стараюсь ничего, но я знаю, как загрузить данные с Firebase. Однако я не знаю, как динамически загружаются данные при прокрутке и WITH Firebase. Этот вопрос не нуждается в коде для непонятного. –

+1

Возможный дубликат [Android: Загрузка данных, таких как facebook и твиттер] (http://stackoverflow.com/questions/8664935/android-loading-data-like-facebook-and-twitter) – sushildlh

ответ

0

Firebase имеет FirebaseRecyclerAdapter для подключения RecyclerView непосредственно к базе данных firebase. См FriendlyChat пример приложения от Google для деталей: https://github.com/firebase/friendlychat

+2

FirebaseRecyclerAdapter не решает мой вопрос. Спасибо за помощь. Trully, мне нужны данные loadind, такие как временная шкала facebook в макете точки зрения и загрузка данных Firebase (от 50 до 50. Загрузите 50 данных, достигните предела, загрузите больше данных с нижней маской до 50) базы данных точек. –

0

вы можете использовать startAt(), EnDAT() и equalTo() метод, официальная ссылка enter link description here

// Find all dinosaurs that are at least three meters tall. 
var ref = firebase.database().ref("dinosaurs"); 
ref.orderByChild("height").startAt(3).on("child_added", function(snapshot) { 
console.log(snapshot.key) 
}); 

ответил: https://stackoverflow.com/a/41583467/1429832

2

Это работает отлично.

private RecyclerView recyclerView; 
    boolean userScrolled=false; 

    private boolean loading = true; 
    int pastVisiblesItems, visibleItemCount, totalItemCount; 

    LinearLayoutManager mLayoutManager; 



     recyclerView = (RecyclerView) findViewById(R.id.recycler_view); 


     mLayoutManager = new LinearLayoutManager(MainActivity.this); 
     recyclerView.setLayoutManager(mLayoutManager); 
     recyclerView.setItemAnimator(new DefaultItemAnimator()); 
     recyclerView.setAdapter(mAdapter); 


// Implement scroll listener 
public void implementScrollListener() { 

    recyclerView 
     .addOnScrollListener(new RecyclerView.OnScrollListener() { 

      @Override 
      public void onScrollStateChanged(RecyclerView recyclerView, 
              int newState) { 

       super.onScrollStateChanged(recyclerView, newState); 

       // If scroll state is touch scroll then set userScrolled 
       // true 
       if (newState == AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL) { 
        userScrolled = true; 

       } 

      } 

      @Override 
      public void onScrolled(RecyclerView recyclerView, int dx, 
            int dy) { 
       super.onScrolled(recyclerView, dx, dy); 

       // Here get the child count, item count and visibleitems 
       // from layout manager 

       visibleItemCount = mLayoutManager.getChildCount(); 
       totalItemCount = mLayoutManager.getItemCount(); 
       pastVisiblesItems = mLayoutManager 
         .findFirstVisibleItemPosition(); 

       // Now check if userScrolled is true and also check if 
       // the item is end then update recycler view and set 
       // userScrolled to false 
       if (userScrolled 
         && (visibleItemCount + pastVisiblesItems) == totalItemCount) { 
        userScrolled = false; 

        RefreshData(oldestPostId); 
       } 
      } 
     }); 
} 
Смежные вопросы