我有数据库1包含所有书籍数据(名称,ID,描述等)
我有另一个数据库包含我添加到收藏夹的书籍ID
我在asynctask
中得到了数据
首先我从第一个数据库中获取所有书籍数据并将其添加到Arraylist<Book>
然后我从第二个数据库中获取最喜欢的书籍ID的ID并将其添加到Arraylist<Integer>
中,然后比较并在书籍中添加参数如果它是最喜欢的
@Override
protected ArrayList<Book> doInBackground(Void... params) {
ArrayList<Book> bookList = new ArrayList<>();
ArrayList<Integer> favlist = new ArrayList<>();
ArrayList<Integer> downlist = new ArrayList<>();
try {
if (mDBAdapter != null) {
mDBAdapter.createDataBase();
mDBAdapter.openDataBase();
bookList = mDBAdapter.selectAllBooks();
}
} catch (IOException ioe) {
throw new Error("Unable to create database");
}
if (mAnnotationDBAdapter!=null) {
favlist = mAnnotationDBAdapter.selectAllFavourite();
}
for (int j = 0; j <bookList.size() ; j++) {
for (int i = 0; i <favlist.size() ; i++) {
if (bookList.get(j).getId()==favlist.get(i))
bookList.get(j).setInFavourite(1);
}
}
return bookList;
}
@Override
protected void onPostExecute(ArrayList<Book> books) {
super.onPostExecute(books);
if (books != null && books.size() > 0) {
Intent mainActivityintent = new Intent(mContext, Main2Activity.class);
mainActivityintent.putExtra(AppConstance.ALL_BOOKS_KEY,books);
mContext.startActivity(mainActivityintent);
}
}
这里的图书清单还可以,如果图书在收藏夹中,则infavourite
参数= 1
但是当我在主要活动中收到它时
我得到infavourite
= 0
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
PublicMethod.mDBAdapter = new AnnotationDBAdapter(this);
Intent intent = getIntent();
if (intent != null) {
if (intent.hasExtra(AppConstance.ALL_BOOKS_KEY)) {
mBooks = intent.getParcelableArrayListExtra(AppConstance.ALL_BOOKS_KEY) ;
//here all book have infavourite = 0
}
}
答案 0 :(得分:0)
我认为您需要使用Intent.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)