arraylist <object>收到的活动与发送的活动不同

时间:2017-04-23 11:52:05

标签: android

我有数据库1包含所有书籍数据(名称,ID,描述等) 我有另一个数据库包含我添加到收藏夹的书籍ID 我在asynctask中得到了数据 首先我从第一个数据库中获取所有书籍数据并将其添加到Arraylist<Book>然后我从第二个数据库中获取最喜欢的书籍ID的ID并将其添加到Arraylist<Integer>中,然后比较并在书籍中添加参数如果它是最喜欢的

,则为1
    @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
      }
    }

1 个答案:

答案 0 :(得分:0)

我认为您需要使用Intent.putParcelableArrayListExtra(String name, ArrayList<? extends Parcelable> value)