實體類在實現parcelable介面時,除了要實現它的幾個方法之外,還另外要定義乙個靜態常量creator,如下例所示:
1public
static
class productmodel implements
parcelable
1415
@override
16public
void writetoparcel(parcel dest, int
flags)
2526
public
productmodel()
2829
protected
productmodel(parcel in)
3839
public
static
final creatorcreator = new creator()
4344
public productmodel newarray(int
size)
47 };
creator在這裡成為了乙個約定,而沒有放到介面定義裡面,個人感覺這樣封裝得不是很好,不知道是不是實在沒有更好的解決辦法才弄成這樣的?
假如在類裡要使用泛型,麻煩就來了,例如這樣
1public
class pagedatamodelextends parcelable> extends
apidatamodel
這個data,就無法正常read(write倒是可以)。
正常的write方式是這樣的:
this.data = dest.createtypedarraylist(parcelable.creatorc)
那麼問題來了,你只有乙個泛型t,沒有具體型別,拿不到它的creator!creator只是乙個約定,而且是跟具體型別繫結的。
所以我前面說如果這個creator能通過某種方式定義下來,這裡或許就能拿到了,然而並沒有。
但是android系統你是改變不了的,我們仍然要解決問題。經過多番調查嘗試之後,終於找到了解決辦法:
pacel是可以讀取和寫入bundle物件的,而bundle物件又可以讀取和寫入parcelable,而且不需要creator(為啥parcel不能設計成這樣,坑爹呢。。)
那麼 我們把泛型資料用bundle包裝一下即可,下面是具體**,親測有效,總算解決這個問題了。
1//write
2 bundle bundle = new
bundle();
3bundle.putparcelablearraylist(data_key, data);
4dest.writebundle(bundle);56
//read
7this.data = in.readbundle().getparcelablearraylist(data_key);
原創 如何在面試時選擇合適的測試人員?
原創 如何在面試時選擇合適的測試人員?1你最近3 5年的職業規劃是什麼?重點考察測試人員的職業發展方向是否與當前職位招聘相符?從其中可以側面看出來其員工穩定性。2乙個專案測試結束,有沒什麼經驗總結?如果有,具體是如何開展的?重點考察測試人員對自己能力提公升方面,有沒有提高總結的地方,從專案中吸取的經...
如何在stack overflow提問
寫這篇部落格的原因主要是在stackoverflow上面提了乙個不符合規範的問題,後來找到了stackoverflow的幫助,我翻譯總結了一下,如何提乙個高質量的問題.如何在stack overflow提問 第一步,先去搜尋論壇上是否已經有你提出過的問題,確保你的問題是和別的問題不一樣,沒有出現過。...
如何在 上安裝
安裝rstudio server 1 sudo apt get install gdebi core 如果出現依賴問題,可以使用sudo apt get f installwget 4 sudo gdebi rstudio server 0.98.490 amd64.deb 經過這四條命令呢,你的r...