Как обновить макет, доступный из RecyclerView, используя Sqlite после значения обновления - PullRequest
0 голосов
/ 03 марта 2019

Я создал RecyclerView с SQlite и заполнил его Cardviews.При нажатии на Cardview новое действие начинает отображать информацию о книге.Для этого я использую intent.putextra из моего класса RecyclerView Adapter.Для столбца Issue_status в моей таблице книг значение по умолчанию Доступно.Теперь в информационной активности книги у меня есть текстовое представление, чтобы показать, доступно ли это или нет.Ниже есть кнопка, которая при нажатии обновляет значение до Недоступно.Но при нажатии обновление успешно, но оно не меняет в реальном времени в деятельности.Также при возврате к RecyclerView статус выдачи карт также не меняется.Только когда я возвращаюсь домой и снова запускаю RecyclerView, появляется обновление.Как сделать обновление в реальном времени?

RecyclerViewAdapter

public RecyclerViewAdapter(Context mContext, List<book> mData) {
        this.mContext = mContext;
        this.mData = mData;
        this.notifyDataSetChanged();
    }

    @Override
    public void onBindViewHolder(MyViewHolder holder, final int position) {

        holder.bookname.setText(mData.get(position).getTitle());
holder.issuestatus.setText(mData.get(position).getIssue());

        //set click listener

        holder.cardView.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                Intent i = new Intent(mContext, Book_Activity.class);
                //passing data to the book activity
                i.putExtra("title", mData.get(position).getTitle());
                i.putExtra("issue", mData.get(position).getIssue());
                //starting activity
                mContext.startActivity(i);

            }
        });

Updatemethod

public boolean issue(String issue, String isbn){
        ContentValues cv = new ContentValues();
        cv.put("Issue_status", issue);
        database.update("books", cv, "ISBN = ?", new String[] {isbn});
        book Book = new book();
        Book.setIssue(issue);
        return true;
    }

Отображение карты в RecyclerView

database.open();
lstbook = databaseAccess.details("SELECT * FROM Books WHERE Category = ?", "Novel");
databse.close();

        myrv = findViewById(R.id.recyclerview_id);
        myAdapter = new RecyclerViewAdapter(this, lstbook);
        myrv.setLayoutManager(new GridLayoutManager(this, 2));
        myrv.setAdapter(myAdapter);
        myAdapter.notifyDataSetChanged();

DisplayBookMethod

public ArrayList<book> details(String query, String category) {
        ArrayList<book> list = new ArrayList<book>();
        String[] where= new String[]{category};
        Cursor cursor = database.rawQuery(query, where);
        if (cursor!=null) {
            if (cursor.moveToFirst()) {
                do {
                    book Book = new book();
                    Book.setTitle(cursor.getString(1));
                    Book.setIssue(cursor.getString(10));
                    list.add(Book);
                }while (cursor.moveToNext());
            }
        }cursor.close();
        return list;
    }

OnClickListener для кнопок обновления

Issue.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                databaseAccess.open();
                databaseAccess.issue("Unavailable", ISBN);
                Toast.makeText(getApplicationContext(), "Book Issued! Please collect from Library", Toast.LENGTH_LONG).show();
                    Issue.setVisibility(View.GONE);
                    Cancel.setVisibility(View.VISIBLE);
                IssueStatus.setText(Issue_Status);
                databaseAccess.close();
            }
        });

        Cancel.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    databaseAccess.open();
                    databaseAccess.issue("Available", ISBN);
                    Toast.makeText(getApplicationContext(), "Issue Cancelled! Please return book to Library if collected", Toast.LENGTH_LONG).show();
                    databaseAccess.close();
                    IssueStatus.setText(Issue_Status);
                    Cancel.setVisibility(View.GONE);
                    Issue.setVisibility(View.VISIBLE);
            }
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...