Android Studio E / RecyclerView: адаптер не подключен; ошибка пропуска макета для перехода между двумя действиями - PullRequest
0 голосов
/ 30 апреля 2020

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

public class Recycler_config {
private Context mContext;
private BookAdapter mBookAdapter;

public void setConfig(RecyclerView recyclerView, Context context, List<Books> books, List<String> keys)
{
    mContext = context;
    mBookAdapter = new BookAdapter(books, keys);
    recyclerView.setLayoutManager(new LinearLayoutManager(context));
    recyclerView.setAdapter(mBookAdapter);
}
class BookItemView extends RecyclerView.ViewHolder {
    private TextView mTitle, mAuthor, mISBN, mCategory;

    private String key;


    public BookItemView(@NonNull ViewGroup parent) {
        super(LayoutInflater.from(mContext).inflate(R.layout.book_list_item, parent, false));
        mTitle = itemView.findViewById(R.id.titles);
        mAuthor = itemView.findViewById(R.id.author);
        mCategory = itemView.findViewById(R.id.category);
        mISBN = itemView.findViewById(R.id.isbn_edit);

        itemView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(mContext, BookDetails.class);
                intent.putExtra("key", key);
                intent.putExtra("author", mAuthor.getText().toString());
                intent.putExtra("title", mTitle.getText().toString());
                intent.putExtra("isbn",mISBN.getText().toString());
                intent.putExtra("category", mCategory.getText().toString());

                mContext.startActivity(intent);

            }
        });

    }

    public void bind(Books book, String key) {
        mTitle.setText(book.getTitle());
        mAuthor.setText(book.getAuthor());
        mCategory.setText(book.getCategory_name());
        mISBN.setText(book.getIsbn());
        this.key = key;
    }

}


     class BookAdapter extends RecyclerView.Adapter<BookItemView> {
        private List<Books> mBookList;
        private List<String> mKeys;

        public BookAdapter(List<Books> mBookList, List<String> mKeys) {
            this.mBookList = mBookList;
            this.mKeys = mKeys;
        }

        @NonNull
        @Override
        public BookItemView onCreateViewHolder(@NonNull ViewGroup parent, int viewType) {
            return new BookItemView(parent);
        }

        @Override
        public void onBindViewHolder(@NonNull BookItemView holder, int position) {
            holder.bind(mBookList.get(position), mKeys.get(position));
        }

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

Ответы [ 2 ]

0 голосов
/ 30 апреля 2020

возможно, вам следует написать clickListener в RecyclerViewApter.onBindViewHolder

holder.view.setOnClickLister

, например, если вы щелкнете по элементу из recyclerView, он будет работать

0 голосов
/ 30 апреля 2020

Реализуйте ваш BookItemView, который является классом ViewHolder с View.OnClickListener, следующим образом:

 implements View.OnClickListener

И затем вызовите реализованную функцию OnClick ()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...