Android firebase的RecyclerView有时会保持空白,但有时会显示项目
这个问题在这里有答案,但对我来说不起作用。我不明白为什么有时候recyclerView会显示项目,但有时候它不会显示。我在viewPager中使用了四个框架。这不是互联网问题,因为其他片段显示来自互联网的数据。我曾尝试使用firebaseRecycler适配器、自定义适配器甚至listView来代替recyclerView。 这是我的密码。请帮帮我Android firebase的RecyclerView有时会保持空白,但有时会显示项目,android,android-fragments,firebase,firebase-realtime-database,android-recyclerview,Android,Android Fragments,Firebase,Firebase Realtime Database,Android Recyclerview,这个问题在这里有答案,但对我来说不起作用。我不明白为什么有时候recyclerView会显示项目,但有时候它不会显示。我在viewPager中使用了四个框架。这不是互联网问题,因为其他片段显示来自互联网的数据。我曾尝试使用firebaseRecycler适配器、自定义适配器甚至listView来代替recyclerView。 这是我的密码。请帮帮我 public class FragmentTips extends Fragment { public RecyclerView recyc
public class FragmentTips extends Fragment {
public RecyclerView recyclerListView;
public MyRecyclerAdapter myAdapter;
DatabaseReference databaseReference;
TextView loading;
View v;
SwipeRefreshLayout refresher;
List<Model> listPosts = new ArrayList<>();
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
v = inflater.inflate(R.layout.activity_home, container, false);
databaseReference = FirebaseDatabase.getInstance().getReference();
creatingLayouts();
final NativeExpressAdView adView = (NativeExpressAdView) v.findViewById(R.id.adView);
adView.loadAd(new AdRequest.Builder().build());
adView.setAdListener(new AdListener() {
@Override
public void onAdLoaded() {
adView.setVisibility(View.VISIBLE);
}
});
return v;
}
public void creatingLayouts() {
refresher = (SwipeRefreshLayout) v.findViewById(R.id.refresher);
//refresher.setRefreshing(true);
refresher.setColorSchemeResources(R.color.blue, R.color.lightBlue, R.color.deepPurple, R.color.purple, R.color.pink, R.color.orange, R.color.red);
refresher.setOnRefreshListener(new SwipeRefreshLayout.OnRefreshListener() {
@Override
public void onRefresh() {
if (myAdapter != null) {
updateAdapter();
}
}
});
loading = (TextView) v.findViewById(R.id.loading);
recyclerListView = (RecyclerView) v.findViewById(R.id.recycler);
recyclerListView.setHasFixedSize(false);
recyclerListView.setLayoutManager(new LinearLayoutManager(getActivity()));
myAdapter = new MyRecyclerAdapter(getContext());
updateAdapter();
recyclerListView.setAdapter(myAdapter);
}
//update adapter
public void updateAdapter() {
listPosts.clear();
databaseReference.child("winbet").addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {
listPosts.add(dataSnapshot.getValue(Model.class));
displayPosts(listPosts);
}
@Override
public void onChildChanged(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onChildRemoved(DataSnapshot dataSnapshot) {
}
@Override
public void onChildMoved(DataSnapshot dataSnapshot, String s) {
}
@Override
public void onCancelled(DatabaseError databaseError) {
Toast.makeText(getContext(), "Canceled", Toast.LENGTH_SHORT).show();
}
});
}
public void displayPosts(List<Model> ls) {
refresher.setRefreshing(false);
loading.setVisibility(View.GONE);
recyclerListView.setVisibility(View.VISIBLE);
myAdapter.setData(ls);
myAdapter.notifyDataSetChanged();
}
}
公共类碎片提示扩展碎片{
公共回收站查看回收站列表视图;
公共MyRecyclerAdapter myAdapter;
数据库参考数据库参考;
文本视图加载;
观点五;
SwipeRefreshLayout复习课程;
List listPosts=new ArrayList();
@凌驾
创建视图时的公共视图(LayoutFlater充气机、@Nullable ViewGroup容器、@Nullable Bundle savedInstanceState){
v=充气机。充气(R.layout.activity\u home,container,false);
databaseReference=FirebaseDatabase.getInstance().getReference();
创建布局();
最终NativeExpressAdView adView=(NativeExpressAdView)v.findViewById(R.id.adView);
adView.loadAd(新的addRequest.Builder().build());
adView.setAdListener(新的AdListener(){
@凌驾
已加载的公共无效(){
adView.setVisibility(View.VISIBLE);
}
});
返回v;
}
公共void creatingLayouts(){
refresher=(SwipeRefreshLayout)v.findViewById(R.id.refresher);
//刷新器。设置刷新(true);
refresher.setColorSchemeResources(R.color.blue,R.color.lightBlue,R.color.deepPurple,R.color.purple,R.color.pink,R.color.orange,R.color.red);
refresher.setOnRefreshListener(新的SwipeRefreshLayout.OnRefreshListener(){
@凌驾
公共void onRefresh(){
if(myAdapter!=null){
updateAdapter();
}
}
});
加载=(TextView)v.findViewById(R.id.loading);
recyclerListView=(RecyclerView)v.findViewById(R.id.recycler);
recyclerListView.setHasFixedSize(false);
setLayoutManager(新的LinearLayoutManager(getActivity());
myAdapter=新的MyRecyclerAdapter(getContext());
updateAdapter();
recyclerListView.setAdapter(myAdapter);
}
//更新适配器
public void updatedapter(){
listPosts.clear();
databaseReference.child(“winbet”).addChildEventListener(新的ChildEventListener()){
@凌驾
公共void onChildAdded(DataSnapshot DataSnapshot,字符串s){
add(dataSnapshot.getValue(Model.class));
显示帖子(列表帖子);
}
@凌驾
公共void onChildChanged(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
ChildRemoved上的公共void(DataSnapshot DataSnapshot){
}
@凌驾
已移动ChildMoved上的公共void(DataSnapshot DataSnapshot,字符串s){
}
@凌驾
已取消的公共void(DatabaseError DatabaseError){
Toast.makeText(getContext(),“cancelled”,Toast.LENGTH_SHORT.show();
}
});
}
公共空白显示柱(列表ls){
刷新器。设置刷新(false);
loading.setVisibility(View.GONE);
recyclerListView.setVisibility(View.VISIBLE);
myAdapter.setData(ls);
myAdapter.notifyDataSetChanged();
}
}
谢谢大家。我终于找到了解决办法。它与代码无关。如果有人遇到过这样的问题。问题是,我使用的是免费的firebase计划,允许的连接数只有100个,所以它达到了峰值,因为我有很多用户。解决方案是升级使用此库比同时使用firebase和RecyclerView更好。。。Anas Mehar,感谢您的回复,但我尝试使用FirebaseRecyclerAdapter作为FirebaseUI库的一个组件,但这是同一个问题。我想首先您应该检查firebase示例应用程序,其中包括firebasearrayadapter的所有用法。不幸的是,在我的情况下,firebase示例链接没有响应,请查看firebase数据库示例。。