Create a parcelable

    xiaoxiao2021-03-25  223

    public interface IArticleLoader extends Parcelable { /** * Load article. * @param loadListener Load complete listener. */ void load(IArticleLoadListener loadListener); } public class PhotoArticleLoader implements IArticleLoader { private IArticleContract.IArticlePresenter mPhotoArticlePresenter; private IArticleLoadListener mLoadListener; private String mUrl; /** * 这个是Creator通过Parcel来创建,在这个函数里面要将Parcel里的数据通过Parcel.readXXX()读出来,这个函数不是API使用者调用,而是被Creator来调用。 * writeToParcel()函数的写入参数 * 这个函数要配合 * Construct a photo article loader. * @param source Parcel. */ public PhotoArticleLoader(Parcel source) { mUrl = source.readString(); } /** * 这个是用于没有Parcel的时候的构造函数 * Url. * @param url Url. */ public PhotoArticleLoader(String url) { mUrl = url; } /** * {@inheritDoc} */ @Override public void load(IArticleLoadListener loadListener) { mLoadListener = loadListener; IDuApplication.HttpClient.addJsonObjectRequest(mUrl, null, new PhotoInfoResponse(), new Response.ErrorListener() { @Override public void onErrorResponse(VolleyError volleyError) { } }); } /** * {@inheritDoc} */ @Override public int describeContents() { return 0; } /** * 这是Parcelable要override的函数,在这里需要把你要打包的数据通过Parcel.writeXXX()写到Parcel里去。 * {@inheritDoc} */ @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(mUrl); } /** * 每个Parcelable都必须要有一个Creator,在createFromParcel()函数中要调用XXX(Parcel)的构造函数 * A creator */ public static final Creator<IArticleLoader> CREATOR = new Creator<IArticleLoader>() { /** * {@inheritDoc} */ @Override public IArticleLoader createFromParcel(Parcel source) { return new PhotoArticleLoader(source); } /** * {@inheritDoc} */ @Override public IArticleLoader[] newArray(int size) { return new TextArticleHtmlLoader[0]; } }; /** * Raw photo info json responser. */ class PhotoInfoResponse implements Response.Listener<JSONObject> { /** * {@inheritDoc} */ @Override public void onResponse(JSONObject jsonObject) { try { JSONArray photoInfos = JsonUtils.getJsonArray("photos", jsonObject); HashMap<String, String> photos = new HashMap<>(); for(int i = 0; i < photoInfos.length(); i++) { JSONObject photoInfo = (JSONObject) photoInfos.get(i); String imageUrl = JsonUtils.getString("imgurl", photoInfo); String note = JsonUtils.getString("note", photoInfo); photos.put(imageUrl, note); } mLoadListener.onLoaded(photos); } catch (JSONException e) { e.printStackTrace(); } } } }
    转载请注明原文地址: https://ju.6miu.com/read-768.html

    最新回复(0)