我有這樣的場景,在我的應用我試圖查詢子節點,並將它傳遞名單上recyclerview適配器檢索火力數據庫值只有一次,來了問題,當我滾動回收查看項目,如果有人已經插入帖子,我的recyclerview再次來到第一個發佈項目,我也使用viewpager與三個片段,無論我的片段我回滾到第一個片段如果有人插入帖子如何解決這個問題。 我已經通過下面提到的方式實現了這一點。怎麼不聽childvalues即使他們已經改變
一種方式即時通訊思想是我想我會不聽childevent變化相反,我將查詢結果後來填充recyclerview不聽孩子的事件,這樣的方式一切國家,因爲它是,我不知道在火力點怎麼辦你檢索值沒有實現監聽器我試過singleValueEventListener的方式仍然是行爲是回滾到第一個項目或第一個片段
指導我通過解決方案如何擺脫這種行爲。
Query query= databasePostsReference.orderByChild("timestamp");
query.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
List<UserPostPOJO> listposts = new ArrayList<UserPostPOJO>();
for(DataSnapshot snapshot : dataSnapshot.getChildren()){
Log.d(TAG, "onDataChange: entered list adding");
UserPostPOJO post =
snapshot.getValue(UserPostPOJO.class);
listposts.add(0,post);
}
if(listposts.isEmpty()){
empty.setVisibility(View.VISIBLE);
recyclerView.setVisibility(View.GONE);
}
else
{
empty.setVisibility(View.GONE);
recyclerView.setVisibility(View.VISIBLE);
makelist(listposts);
}
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
private void makelist(List<UserPostPOJO> listposts) {
list = listposts;
Log.d(TAG,"size is "+ list.size()+"");
recyclerView.setHasFixedSize(true);
recyclerView.setLayoutManager(new
LinearLayoutManager(getActivity()));
CustomRecyclerViewAdapter adapter = new
CustomRecyclerViewAdapter(getActivity(), list,"recentfragment");
recyclerView.setAdapter(adapter);
}
WAW我完全忘了這一點生病閱讀並嘗試實現感謝這個 –
不客氣。保持我的發佈。 –
嗨亞歷克斯我試圖刪除聽衆,但仍然行爲是相同的,你可以指導我通過這個。 什麼我已經加入,我已經取出的直列收聽者做出的監聽器對象和onDataChange方法 query.removeEventListener(受聽者)內後makelist方法onDataChange方法中添加下列行; –