Я создал 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);
}
});