亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用接口正確實現多態性?

如何使用接口正確實現多態性?

拉莫斯之舞 2022-07-20 16:13:40
我有 2 個模型類(數據,標題),它們包含相同的字段:字符串數據 ID。我想通過接口實現獲得這兩個 ID。我通過 Bundle 將 Title 模型傳遞給另一個 Activity,在同一個 Activity 中通過 Bundle 傳遞 Data 模型(只是創建 Activity 的新實例并重置信息)。我希望我的兩個模型類都使用方法 String getSharedId(); 實現 SharedID 接口;我怎樣才能從不同的模型中獲得不同的 id?我只需要輸入一個參數,它應該是我的 ViewModelFactory 構造函數中的字符串。public class Data implements SharedId,Parcelable {private String text;private String textHeader;private int viewType;private String mainId;private String dataID;public Data() { }public String getDataID() {    return dataID;}public void setDataID(String dataID) {    this.dataID = dataID;}public String getText() {return (String) trimTrailingWhitespace(text); }public void setText(String text) {    this.text = (String) trimTrailingWhitespace(text);}public String getTextHeader() {    return (String) trimTrailingWhitespace(textHeader);}public void setTextHeader(String textHeader) {    this.textHeader = textHeader;}public int getViewType() {    return viewType;}public void setViewType(int viewType) {    this.viewType = viewType;}public String getMainId() {    return mainId;}public void setMainId(String mainId) {    this.mainId = mainId;}protected Data(Parcel in) {    text = in.readString();    textHeader = in.readString();    viewType = in.readInt();    mainId = in.readString();    dataID = in.readString();}@Overridepublic String toString() {    return "Data{" +            "order=" +            ", text='" + text + '\'' +            ", textHeader='" + textHeader + '\'' +            ", viewType=" + viewType +            '}';}@SuppressWarnings("StatementWithEmptyBody")public static CharSequence trimTrailingWhitespace(CharSequence source) {    if (source == null) {        return "";    }    int i = source.length();    // loop back to the first non-whitespace character    while (--i >= 0 && Character.isWhitespace(source.charAt(i))) {    }    return source.subSequence(0, i + 1);}
查看完整描述

1 回答

?
白豬掌柜的

TA貢獻1893條經驗 獲得超10個贊

我發現了一些不同但有效的解決方案!


我創建一個界面


public interface SharedId {

 String getSharedDataId();

 String getHeader();

}

我的兩個模型類 Data + Title 都實現了接口和方法。在 DetailActivity 我創建了 2 個字符串。私有字符串 mainId;私有字符串 detailId;然后用我的模型類和 bundle 傳遞 id


`SharedId mainId = new Title();

    SharedId detailId = new Data();

    Bundle bundle = getIntent().getExtras();

    if (bundle != null) {

        mainId = bundle.containsKey("ID") ? bundle.getParcelable("ID") : null;

        detailId = bundle.containsKey("idDetail") ? 

     bundle.getParcelable("idDetail") : null;

    }

    if (mainId != null) {

        this.detailId = mainId.getSharedDataId();

        tvToolbarTitle.setText(mainId.getHeader());

    }

    if (detailId != null) {

        this.mainId = detailId.getSharedDataId();

        tvToolbarTitle.setText(detailId.getHeader());

    }

并傳入我的 ViewmodelFactory


 DetailViewModelFactory detailViewModelFactory =

            new DetailViewModelFactory(this.detailId != null ?

            this.detailId : this.mainId);


查看完整回答
反對 回復 2022-07-20
  • 1 回答
  • 0 關注
  • 103 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號