Listview onitemclicklistener с использованием firebase

Разработка приложения для книг. На моей домашней странице я хотел бы, чтобы список книг, и пользователь мог щелкнуть по одной из них, чтобы перейти на страницу сведений и приобрести книгу.

У меня это работает с RecyclerView, но мне нужно использовать ListView здесь.

В настоящий момент, когда я нажимаю элемент в списке, приложение вылетает из строя.

Вот метод моей домашней страницы, чтобы получить все книги и попытаться перейти на страницу с подробностями:

public void getAllBooks(){
        mFirebaseRef = FirebaseDatabase.getInstance().getReference("Book");
        mFirebaseRef.addListenerForSingleValueEvent(new ValueEventListener() {
            @Override
            public void onDataChange(DataSnapshot dataSnapshot) {
                for (DataSnapshot ds : dataSnapshot.getChildren()) {

                    String id = ds.child("id").getValue(String.class);
                    String title = ds.child("title").getValue(String.class);
                    String author = ds.child("author").getValue(String.class);
                    String category = ds.child("category").getValue(String.class);
                    String image = ds.child("image").getValue(String.class);
                    Double price = ds.child("price").getValue(Double.class);
                    Integer quantity = ds.child("quantity").getValue(Integer.class);
                    Integer noReviews = ds.child("noOfReviews").getValue(Integer.class);
                    Double rating = ds.child("rating").getValue(Double.class);

                    Book book = new Book(id, title, author, category, image, noReviews, quantity, price, rating);
                    allBooks.add(book);

                }
                booksAdapter = new ViewAllBooksAdapter(allBooks, CustomerWelcome.this);
                listView.setAdapter(booksAdapter);

                listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                    @Override
                    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                        ((GlobalVariables) CustomerWelcome.this.getApplication()).setCurrentBook(allBooks.get(position).toString());
                        startActivity(new Intent(CustomerWelcome.this, ViewBook.class));

                    }
                });

            }

            @Override
            public void onCancelled(DatabaseError databaseError) {

            }
        });
    }

Мой адаптер (в случае необходимости)

public class ViewAllBooksAdapter extends ArrayAdapter<Book> {
Context context;
ArrayList<Book> books;
int pos;

private static class ViewHolder {
    TextView titleTV;
    TextView authorTV;
    TextView categoryTV;
    TextView priceTV;
    ImageView imageView;
}

public ViewAllBooksAdapter(ArrayList<Book> books, Context context) {
    super(context, R.layout.search_list_items, books);
    this.books = books;
    this.context = context;
}


@Override
public View getView(final int position, View convertView, ViewGroup parent){

    ViewHolder viewHolder;

    viewHolder = new ViewHolder();
    LayoutInflater inflater = LayoutInflater.from(getContext());
    convertView = inflater.inflate(R.layout.search_list_items, parent, false);
    viewHolder.titleTV = (TextView) convertView.findViewById(R.id.titleSearchItem);
    viewHolder.authorTV = (TextView) convertView.findViewById(R.id.authorSearchItem);
    viewHolder.categoryTV = (TextView) convertView.findViewById(R.id.categorySearchItem);
    viewHolder.priceTV = (TextView) convertView.findViewById(R.id.priceSearchItem);
    viewHolder.imageView = (ImageView) convertView.findViewById(R.id.bookImage);

    viewHolder.titleTV.setText(books.get(position).getTitle());
    viewHolder.authorTV.setText(books.get(position).getAuthor());
    viewHolder.categoryTV.setText(books.get(position).getCategory());
    viewHolder.priceTV.setText("€ " + books.get(position).getPrice().toString());

    Picasso.with(context).load(books.get(position).getImage()).fit().placeholder(R.mipmap.ic_launcher_round).into(viewHolder.imageView);

    return convertView;
}

Моя глобальная переменная класса также:

public class GlobalVariables extends Application{

    String currentBook;

    public String getCurrentBook() {
        return currentBook;
    }

    public void setCurrentBook(String currentBook) {
        this.currentBook = currentBook;
    }
}

Как всегда, приветствуется любая помощь.

РЕДАКТИРОВАТЬ Моя ошибка:

 Caused by: com.google.firebase.database.DatabaseException: Invalid Firebase Database path: com.example.cf.bookapplication.entity.Book@9c83686. Firebase Database paths must not contain '.', '#', '$', '[', or ']'
                                                                                 at com.google.android.gms.internal.zzbqh.zzjm(Unknown Source)
                                                                                 at com.google.firebase.database.DatabaseReference.child(Unknown Source)
                                                                                 at com.example.cf.bookapplication.activity.ViewBook.onCreate(ViewBook.java:152)

в чем проблема?

Levi Moreira 11.04.2018 13:30

@LeviAlbuquerque мое приложение вылетает, если я нажимаю что-то в списке

Chloe Finn 11.04.2018 13:30

Поделитесь полученной ошибкой

MathankumarK 11.04.2018 13:32

В чем ошибка? Вы проверяли, вылетает ли он до того, как попадет в onClick или в блок onClick? Если после этого произойдет сбой, вы указали свою активность ViewBook ​​в своем манифесте?

Matthieu Meunier 11.04.2018 13:33

Пожалуйста, поделитесь своим журналом ошибок. Без этого мы не сможем вам помочь.

sunil sunny 11.04.2018 13:34

@MatthieuMeunier поделился моей ошибкой там

Chloe Finn 11.04.2018 13:36

перейдите по этой ссылке stackoverflow.com/questions/41076398/…

vikas singh 11.04.2018 13:38

Проблема возникает в строке класса ViewBook без 152, и вам нужно сделать что-то вроде этого в качестве обходного пути stackoverflow.com/a/41077295/3111083.

sunil sunny 11.04.2018 13:44

@AtifAbbAsi, почему ты это поднял?

Chloe Finn 11.04.2018 13:46

@ChloeFinn поделитесь своей структурой узла Firebase.!

Atif AbbAsi 11.04.2018 13:48
0
10
217
0

Другие вопросы по теме