未確認はjava.util.ArrayListのにjava.io.Serializableのをキャスト

HipólitoHuaylla:

ヘルプは、私が持っていることを次のコードでは、次のメッセージを取得してください。

listaFinal = (ArrayList<PuntoNota>) getIntent().getSerializableExtra("miLista");

AdapterDatos adapter = new AdapterDatos(this, listaFinal);

PuntoNota.java

public class PuntoNota implements Serializable{
private String punto;
private String nota;

public PuntoNota (String punto, String nota){
    this.punto = punto;
    this.nota = nota;
}

public String getPunto(){
    return punto;
}


public String getNota(){
    return nota;
}

}

AdapterDatos:

public AdapterDatos(Context context, ArrayList<PuntoNota> puntoNotaList) {
    this.context = context;
    this.puntoNotaList = puntoNotaList;
}

アプリケーションがうまく機能しているが、私は、次のメッセージが表示されます。

未確認のキャスト: 'java.util.ArrayListの'から'java.io.Serializableの'小さい...(Ctrlキー+ F1)。
(ArrayListを)getIntent():このコードについて。getSerializableExtra( "はmyList"); このメッセージを削除するか、または非表示にすることをお勧めでしょうか?

チュオン息子:

根本原因:これは、IDEからの警告でgetSerializableExtra返しSerializable、あなたがに変換しようとしていますArrayList<PuntoNota>それは投げるかもしれないClassCastExceptionが programeは、あなたの期待型にキャストできない場合は、実行時に。

ソリューション:では、あなたのクラスべき道具、周りのユーザー定義のオブジェクトを渡すには、AndroidのParcelable代わりのSerializableインタフェース。

class PuntoNota implements Parcelable {
    private String punto;
    private String nota;

    public PuntoNota(String punto, String nota) {
        this.punto = punto;
        this.nota = nota;
    }

    protected PuntoNota(Parcel in) {
        punto = in.readString();
        nota = in.readString();
    }

    public String getPunto() {
        return punto;
    }

    public String getNota() {
        return nota;
    }

    @Override
    public int describeContents() {
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(punto);
        dest.writeString(nota);
    }

    public static final Creator<PuntoNota> CREATOR = new Creator<PuntoNota>() {
        @Override
        public PuntoNota createFromParcel(Parcel in) {
            return new PuntoNota(in);
        }

        @Override
        public PuntoNota[] newArray(int size) {
            return new PuntoNota[size];
        }
    };
}

ページを送信するには

ArrayList<PuntoNota> myList = new ArrayList<>();
// Fill data to myList here
...
Intent intent = new Intent();
intent.putParcelableArrayListExtra("miLista", myList);

受信機側では

ArrayList<? extends PuntoNota> listaFinal = getIntent().getParcelableArrayListExtra("miLista");

おすすめ

転載: http://43.154.161.224:23101/article/api/json?id=173392&siteId=1