【问题标题】:Recycler View is not Showing anything on the activity回收站视图未在活动中显示任何内容
【发布时间】:2019-05-06 18:16:11
【问题描述】:

我从 firebase 获得了书籍的详细信息并添加到“BookList”列表中。书籍被添加,我设置了回收器视图和适配器,但是当我运行应用程序时它没有显示任何内容。我不知道我的代码有什么问题

任何帮助将不胜感激。

1) 愿望清单活动

public class WishListActivity extends AppCompatActivity {
    RecyclerView recyclerView;
    FirebaseUser CurrentUser;
    String CurrentUserEmail;
    WishListAdapter wishListAdapter;

    List<BooksModel> BookList;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_wish_list);

        CurrentUser = FirebaseAuth.getInstance().getCurrentUser();
        CurrentUserEmail = CurrentUser.getEmail();
        recyclerView = findViewById(R.id.recyclerView_WishList);
        recyclerView.setHasFixedSize(true);
        recyclerView.setLayoutManager(new LinearLayoutManager(this));
        BookList = new ArrayList<>();

        DatabaseReference WishListRef = 
        FirebaseDatabase.getInstance().getReference("wishlist");
        WishListRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                if(dataSnapshot.exists()){
                    for(DataSnapshot 
        WishListSnapshot:dataSnapshot.getChildren()){


                        WishListModel Model = 
        WishListSnapshot.getValue(WishListModel.class);

                        if(Model.getEmail().equals(CurrentUserEmail)){

                            DatabaseReference BookReference = 





 FirebaseDatabase.getInstance().getReference("Books").child(Model.getKey());
                            BookReference.addListenerForSingleValueEvent(new ValueEventListener() {
                                @Override
                                public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
                                    BooksModel Book = dataSnapshot.getValue(BooksModel.class);
                                    BookList.add(Book);
                                }

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

                                }
                            });

                        }
                        else{
                            Toast.makeText(WishListActivity.this, "Email Not Matched! ", Toast.LENGTH_SHORT).show();
                        }

                    }
                    wishListAdapter = new WishListAdapter(WishListActivity.this,BookList);
                    recyclerView.setAdapter(wishListAdapter);

                }
            }

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

            }
        });
    }
}

WishListAdapter

public class WishListAdapter extends RecyclerView.Adapter<WishListAdapter.WishListViewHolder>{
    private Context context;
    private List<BooksModel> mDatalist;

    public WishListAdapter(Context context, List<BooksModel> mDatalist) {
        this.context = context;
        this.mDatalist = mDatalist;
    }

    @NonNull
    @Override
    public WishListViewHolder onCreateViewHolder(@NonNull ViewGroup viewGroup, int i) {
        View rootView = LayoutInflater.from(context).inflate(R.layout.wish_list,viewGroup
        ,false);
        WishListViewHolder wishListViewHolder = new WishListViewHolder(rootView);
        return wishListViewHolder;
    }

    @Override
    public void onBindViewHolder(@NonNull WishListViewHolder wishListViewHolder, int i) {

        final BooksModel Book = mDatalist.get(i);

        wishListViewHolder.BookName.setText(Book.getName());
        wishListViewHolder.BookPrice.setText(Book.getPrice());
        wishListViewHolder.AuthorName.setText(Book.getAuthor());
        wishListViewHolder.RemoveButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(context, "Remove Button Clicked! ", Toast.LENGTH_SHORT).show();
            }

        });

    }

    @Override
    public int getItemCount() {
        return mDatalist.size();
    }

    public class WishListViewHolder extends  RecyclerView.ViewHolder{

        TextView BookName,BookPrice,AuthorName;
        Button RemoveButton;



        public WishListViewHolder(@NonNull View itemView) {
            super(itemView);

            BookName = itemView.findViewById(R.id.book_price_wish_list);
            BookPrice = itemView.findViewById(R.id.book_price_wish_list);
            RemoveButton = itemView.findViewById(R.id.remove_book_wish_list);

        }
    }

}

愿望清单活动的代码

【问题讨论】:

    标签: android firebase-realtime-database android-recyclerview


    【解决方案1】:

    如果您不设置适配器大小,则必须在适配器类中设置适配器大小,那么如何在适配器上显示项目,只需更改适配器类中的 getItemCount,如下所示:-

    @Override
    public int getItemCount() {
        return 0;
    }
    

    并在此处设置您的列表大小:-

    @Override
    public int getItemCount() {
        return mDatalist.size();
    }
    

    【讨论】:

      【解决方案2】:

      您必须在您的适配器类中设置您的适配器数组列表大小。在您的适配器类中更改此代码

      @Override
      public int getItemCount() {
          return 0;
      }
      

      在下面更新您的捐赠。

      @Override
      public int getItemCount() {
           return mDatalist.size();
      }
      

      【讨论】:

        【解决方案3】:

        WishListAdapter 出错了,

        @Override
        public int getItemCount() {
            return 0;
        }
        

        它会使recyclerView 和adapter 不渲染任何项目。

        应该是

        @Override
        public int getItemCount() {
            return mDatalist.size();
        }
        

        【讨论】:

          【解决方案4】:

          问题是

            @Override
              public int getItemCount() {
                  return 0;
              }
          

          像这样返回原始列表大小

          @Override
                  public int getItemCount() {
                      return mDatalist.size();
                  }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2015-02-26
            • 1970-01-01
            • 2022-01-11
            • 2021-10-01
            相关资源
            最近更新 更多