【发布时间】:2016-06-03 13:25:44
【问题描述】:
我有一个 Books.java 类 implements Book.java 的列表,在 MainActivity.java 中我用书籍填充对象库。我想将对象库从MainActivity.java 发送到ListActivity.java 但不适用于i.putExtra. 我该怎么做?
书籍.java
import java.util.ArrayList;
import java.util.List;
public class Books implements DataAggregate <Book>{
private List<Book> books;
public Books(){};
public List<Book> getAll() {
return this.getBooks();
}
public int size() {
return this.getBooks().size();
}
public void insert(Book element) {
this.getBooks().add(element);
}
public void delete(Book element) {
this.getBooks().remove(element);
}
private List<Book> getBooks() {
if (books==null){
books=new ArrayList<Book>();
}
return books;
}
}
MainActivity.java
Books library;
for (int i = 0; i<db_books.size(); i++){
String name = db_books.get(i).getBookName();
String author = db_books.get(i).getBookAuthor();
String epc = db_books.get(i).getBookEpc();
Integer number = db_books.get(i).getNumBooks();
Book myBook = new Book(name, author, epc, number);
library.insert(myBook);
}
Intent i = new Intent(getApplicationContext(),ListActivity.class);
i.putExtra("library",library);
startActivity(i);
ListActivity.java
Books library = extras.getString("library");
Book.java
public class Book implements Serializable {
private String bookName;
private String bookAuthor;
private String bookEpc;
private Integer numBooks;
public Book(){
}
public Book(String bname, String bauthor, String bepc, Integer nbooks){
this.bookName = bname;
this.bookAuthor = bauthor;
this.bookEpc = bepc;
this.numBooks = nbooks;
}
public String getBookName() {
return bookName;
}
public void setBookName(String bookName) {
this.bookName = bookName;
}
public String getBookAuthor() {
return bookAuthor;
}
public void setBookAuthor(String bookAuthor) {
this.bookAuthor = bookAuthor;
}
public String getBookEpc() {
return bookEpc;
}
public void setBookEpc(String bookEpc) {
this.bookEpc = bookEpc;
}
public Integer getNumBooks() {
return numBooks;
}
public void setNumBooks(Integer numBooks) {
this.numBooks = numBooks;
}
public void prettyPrint(){
Log.d("Book:", this.bookName+" "+this.bookAuthor+" "+this.bookEpc+" "+this.numBooks.toString());
}
}
【问题讨论】:
-
请参阅此link。希望对你有帮助。
-
@Lawrance 我必须将 Books.java 实现为可序列化?
-
@Lawrance 不起作用,
java.lang.RuntimeException: Unable to start activity ComponentInfo{upf.mybooks/upf.mybooks.ListActivity}: java.lang.ClassCastException: upf.mybooks.model.Books cannot be cast to java.util.List
标签: java android android-layout android-intent android-inflate