久久福利_99r_国产日韩在线视频_直接看av的网站_中文欧美日韩_久久一

您的位置:首頁技術(shù)文章
文章詳情頁

Android如何解析異構(gòu)列表

瀏覽:3日期:2022-09-20 14:12:05
前言

開發(fā)業(yè)務(wù)需求時,遇到了列表中包含完全不同類型的數(shù)據(jù)結(jié)構(gòu)。這種列表我們稱為異構(gòu)列表。以聊天記錄列表為例

[{'msgType' : 'text','id' : '1','content' : 'Hello world'},{'msgType' : 'record','id' : '2','url' : 'https://xxxx.mp4','length' : 123450},{'msgType' : 'image','id' : '3','url' : 'https://xxxx.jpg','size' : '300x300'}]

要想解析上面的JSON,手動解析不是不行,但肯定不推薦。如果直接使用解析工具,比如用Gson來解析的話,無論定義什么樣的數(shù)據(jù)結(jié)構(gòu)好像都不符合上面的列表元素。

那可不可以做到,我們告訴Gson列表中各個元素分別是什么樣的數(shù)據(jù)類型,這樣它不就知道該怎么解析了嗎?接下來我們通過Gson的TypeAdapter來實現(xiàn)自定義解析。

實現(xiàn)方案

先定義好各種數(shù)據(jù)類型,與msgType字段一一對應(yīng)

abstract class BaseMessage(val id: String?, val msgType: String?)class TextMessage(id: String?, msgType: String?, val content: String?) : BaseMessage(id, msgType)class ImageMessage(id: String?, msgType: String?, val url: String?, val size: String?) : BaseMessage(id, msgType)class RecordMessage(id: String?, msgType: String?, val url: String?, val length: Long) : BaseMessage(id, msgType)

接著自定義一個TypeAdapter。

class BaseMessageTypeAdapter : TypeAdapter<BaseMessage>() { override fun write(out: JsonWriter, value: BaseMessage?) { } override fun read(`in`: JsonReader): BaseMessage? { }}

可以看到里面有兩個方法:write()負(fù)責(zé)序列化,read()負(fù)責(zé)反序列化。我們先重點關(guān)注read()的實現(xiàn)

實現(xiàn)read()的基本思路如下

讀取msgType字段 根據(jù)msgType判斷對應(yīng)的數(shù)據(jù)類型 根據(jù)該數(shù)據(jù)類型獲取解析該類型的TypeAdapter 交給對應(yīng)類型的TypeAdapter解析

依照上述思路,可以寫出read()的基本實現(xiàn)代碼。當(dāng)然這是比較粗糙的實現(xiàn),實際上還有其他情況要考慮

class BaseMessageTypeAdapter(private val gson: Gson, private val skipPast: TypeAdapterFactory) : TypeAdapter<BaseMessage>() { override fun read(`in`: JsonReader): BaseMessage? { // 1.讀取msgType字段 val jsonObject = Streams.parse(`in`).asJsonObject val msgType = jsonObject.get('msgType')?.asString // 2.根據(jù)msgType獲取解析該類型的TypeAdapter val adapter = getTypeAdapterByType(msgType) // 3.交給對應(yīng)類型的TypeAdapter解析 return adapter?.fromJsonTree(jsonObject) }}

write()方法沒什么好說的,直接交給對應(yīng)類型的TypeAdapter序列化

class BaseMessageTypeAdapter(private val gson: Gson, private val skipPast: TypeAdapterFactory) : TypeAdapter<BaseMessage>() { override fun write(out: JsonWriter, value: BaseMessage?) { if (value == null) { out.nullValue() return } getTypeAdapterByType(value.msgType)?.write(out, value) }}

接著就是實現(xiàn)getTypeAdapterByType()方法。

private fun getTypeAdapterByType(type: String?): TypeAdapter<BaseMessage>? { return when (type) { 'text' -> getTypeAdapter(TextMessage::class.java) 'image' -> getTypeAdapter(ImageMessage::class.java) 'record' -> getTypeAdapter(RecordMessage::class.java) else -> null } } private fun <R : BaseMessage> getTypeAdapter(clazz: Class<R>): TypeAdapter<BaseMessage> { // 獲取Gson中該類型對應(yīng)的TypeAdapter return SubTypeAdapterWrapper(clazz, gson.getDelegateAdapter(skipPast, TypeToken.get(clazz))) }

邏輯也比較簡單。需要注意的是,在getTypeAdapter()方法中,要將TypeAdapter<out BaseMessage>轉(zhuǎn)換成TypeAdapter<BaseMessage>。接下來我們看看SubTypeAdapterWrapper是怎樣實現(xiàn)的

class SubTypeAdapterWrapper<T, R : T>(private val clazz: Class<R>, private val adapter: TypeAdapter<R>) : TypeAdapter<T>() { override fun write(out: JsonWriter, value: T) { if (!clazz.isInstance(value)) { throw JsonSyntaxException('Expected a ' + clazz.name + ' but was ' + value) } adapter.write(out, value as R) } override fun read(`in`: JsonReader): T { return adapter.read(`in`) }}

其實就是一個包裝類。將解析R類型的TypeAdapter包裝成解析T類型的TypeAdapter。

最后就是實現(xiàn)一個TypeAdapterFactory,并將其注冊到Gson

class BaseMessageTypeAdapterFactory : TypeAdapterFactory { override fun <T : Any?> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? { if (!BaseMessage::class.java.isAssignableFrom(type.rawType)) { return null } return BaseMessageTypeAdapter(gson, this) as (TypeAdapter<T>) }}

寫個測試用例測試一下

抽象封裝

為了更好的復(fù)用,接下來我們要對BaseMessageTypeAdapter改造一下。

定義一個新的TypeAdapter子類。將類型和TypeAdapter的關(guān)系用Map來存儲,并提供方法給外部調(diào)用。

public class HeterogeneousTypeAdapter<T> extends TypeAdapter<T> { private final Gson mGson; private final TypeAdapterFactory mSkipPast; private final String mFieldName; private final Map<String, TypeAdapter<T>> mClassToAdapterMap = new HashMap<>(); private final Map<String, TypeAdapter<T>> mFieldToAdapterMap = new HashMap<>(); public HeterogeneousTypeAdapter(Gson gson, TypeAdapterFactory skipPast, String fieldName) { mGson = gson; mSkipPast = skipPast; mFieldName = fieldName; } public <R extends T> void addSubTypeAdapter(final String fieldValue, final Class<R> cls) { final TypeAdapter<R> typeAdapter = mGson.getDelegateAdapter(mSkipPast, TypeToken.get(cls)); addSubTypeAdapter(fieldValue, cls, typeAdapter); } public <R extends T> void addSubTypeAdapter(final String fieldValue, final Class<R> cls, final TypeAdapter<R> typeAdapter) { final TypeAdapter<T> adapter = new SubTypeAdapterWrapper<>(cls, typeAdapter); mClassToAdapterMap.put(cls.getName(), adapter); mFieldToAdapterMap.put(fieldValue, adapter); } @Override public void write(JsonWriter out, T value) throws IOException { if (value == null) { out.nullValue(); return; } getTypeAdapterByClass(value.getClass()).write(out, value); } @Override public T read(JsonReader in) throws IOException { if (in.peek() == JsonToken.NULL) { in.nextNull(); return null; } final JsonObject jsonObject = Streams.parse(in).getAsJsonObject(); final JsonElement fieldElement = jsonObject.get(mFieldName); if (fieldElement == null || fieldElement.isJsonNull()) { throw new JsonSyntaxException('Field ' + mFieldName + ' is null or not found'); } final String field = fieldElement.getAsJsonPrimitive().getAsString(); final TypeAdapter<T> adapter = getTypeAdapterByField(field); if (adapter == null) { // Unknown field, just skip return null; } return adapter.fromJsonTree(jsonObject); } private TypeAdapter<T> getTypeAdapterByClass(Class<?> cls) { TypeAdapter<T> adapter = mClassToAdapterMap.get(cls.getName()); if (adapter == null) { throw new JsonParseException('Unknown class : ' + cls); } return adapter; } private TypeAdapter<T> getTypeAdapterByField(String field) { return mFieldToAdapterMap.get(field); }}

使用方式

class BaseMessageTypeAdapterFactory : TypeAdapterFactory { override fun <T : Any?> create(gson: Gson, type: TypeToken<T>): TypeAdapter<T>? { if (!BaseMessage::class.java.isAssignableFrom(type.rawType)) { return null } val adapter = HeterogeneousTypeAdapter<BaseMessage>(gson, this, 'msgType') // 注冊各種類型 adapter.addSubTypeAdapter('text', TextMessage::class.java) adapter.addSubTypeAdapter('image', ImageMessage::class.java) adapter.addSubTypeAdapter('record', RecordMessage::class.java) return adapter as (TypeAdapter<T>) }}總結(jié)

通過自定義TypeAdapter,我們實現(xiàn)了解析異構(gòu)列表的功能。免除手動解析的繁瑣工作,避免出現(xiàn)不必要的錯誤。

以上就是Android如何解析異構(gòu)列表的詳細(xì)內(nèi)容,更多關(guān)于Android 解析異構(gòu)列表的資料請關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Android
相關(guān)文章:
主站蜘蛛池模板: 欧美视频免费看 | 国产目拍亚洲精品99久久精品 | 欧美不卡一区二区三区 | 欧美成人一区二区 | 亚洲国产精品麻豆 | 激情亚洲 | 亚洲欧美综合 | 国产精品视频一区二区免费不卡 | 亚洲精品视频在线播放 | 日本在线一区二区 | 午夜99 | 国产老头老太作爱视频 | 成年人网站在线免费看 | 国产精品久久久精品 | 天堂一区二区三区在线 | 高清国产午夜精品久久久久久 | 91视频网| 午夜精品一区二区三区在线视频 | 色综合天天综合网国产成人网 | 干狠狠| 国产在线网站 | 精品久久一区二区三区 | 日韩电影一区二区在线观看 | 黄色av网站在线观看 | 一级黄免费看 | 日韩在线播放一区二区三区 | 天堂资源网| www.视频在线观看 | 天天操狠狠操网站 | 久久久久久一区 | 亚洲二区视频 | 999视频网| 久久综合九色综合欧美狠狠 | 91av视频在线 | 中文av在线免费观看 | 日本精品一区 | 高清成人 | 国产精品99久久久久久久vr | 欧美国产91| 亚洲乱码国产乱码精品精 | 久久三区 | 国精产品一区一区三区免费完 | 久久成人一区 | 99色综合| 欧美激情精品久久久久久 | 国产免费一区二区三区 | 日韩在线一区二区三区 | 亚洲h | 日韩在线观看一区二区 | 久久99精品久久久久久琪琪 | 国产视频网 | 欧美日韩激情在线 | 台湾av在线| 毛片毛片毛片 | 伊人网站| 日韩精品在线一区 | 国产目拍亚洲精品99久久精品 | 国产福利一区二区 | 狠狠搞狠狠搞 | 久热中文在线 | 欧洲亚洲视频 | 亚洲午夜免费视频 | 男人的天堂视频网站 | 羞羞视频网站在线免费观看 | 亚洲高清一区二区三区 | 国产精品国产精品国产专区不卡 | 欧美成人精品一区二区 | www在线看片 | 亚洲精品www久久久久久 | 亚洲精品二区 | 欧美成人精品一区二区男人看 | 成年人在线观看 | 亚洲精美视频 | 99热精品免费 | 中文字幕国产日韩 | 亚洲成人免费 | 久久99精品久久久久久琪琪 | 久久国产精品久久久久久电车 | 99re免费视频精品全部 | 一区二区视频在线观看 | 欧洲成人午夜免费大片 | 一区不卡| 午夜免费av | 欧美日韩综合精品 | 久久久美女 | 精品一区二区三区免费 | 国产乱码一区二区三区 | 亚洲成人免费在线 | 国产欧美日韩精品一区 | 亚洲一区在线日韩在线深爱 | 876av国产精品电影 | 日韩一区二区在线播放 | 国产精品一区二区在线观看 | 亚洲精品电影 | 欧美日韩一区二区中文字幕 | 中文字幕日韩欧美 | 在线亚洲免费 | 亚洲欧美少妇 | 日韩欧美在线综合 | av一区在线观看 | 99re在线视频 | 亚洲精品电影在线观看 | 国产一区二区精品在线 | 色婷婷在线视频 | www.一区| 亚洲欧美一区二区三区在线 | 国产精品日本一区二区在线播放 | 成人欧美一区二区三区黑人孕妇 | 国产亚洲一区二区精品 | 日韩精品在线观看一区 | 欧美日日| 亚洲视频久久久 | 蜜桃av一区二区三区 | 久久综合久久综合久久综合 | 久草视频在线播放 | 国产激情偷乱视频一区二区三区 | 国产一区二区三区精品久久久 | 日韩电影专区 | 99久久99久久精品国产片果冻 | 国产成人99久久亚洲综合精品 | 婷五月综合 | 日韩中文一区 | 国产一区二区三区久久久久久久久 | 国产v日产∨综合v精品视频 | 久久亚洲视频 | 国产乱码精品一区二区三区中文 | 日韩午夜激情视频 | 91精品久久久久久久久久小网站 | 少妇激烈床戏视频 | 偷偷干夜夜拍 | 亚洲国产一区视频 | 精品久久久久久久 | 欧美日韩一区二区三区在线观看 | 精品久久久久一区二区国产 | 精品久久久久久亚洲精品 | 日韩在线免费 | 日韩中文字幕一区 | 日日爱视频 | 日韩一区二区在线视频 | 日本一区二区三区中文字幕 | 中文字幕亚洲一区二区三区 | 日韩高清av | 国产精品资源在线 | 精品婷婷| 午夜视频网 | 涩涩视频在线 | 欧美成人伊人 | 国产免费一区二区三区 | 久综合网 | 羞羞在线视频 | 黄理论视频 | 国产高清一区二区三区 | 日韩在线成人 | 伊人伊人| 91麻豆精品国产91久久久资源速度 | 蜜桃免费一区二区三区 | 久久r精品| 一本a道v久大| 亚洲精品视频免费观看 | 大陆毛片| 国产精品久久一区 | 欧美涩涩网 | 99在线观看 | 久久久国产精品 | 日韩av免费在线播放 | 精品国产乱码久久久久久久软件 | 欧美电影一区 | 亚洲一级黄色 | 欧美.com | 成人av观看 | 激情欧美一区二区 | 看特级毛片 | 日韩国产| 亚洲三区在线观看 | 人人鲁人人莫一区二区三区 | 欧美日本久久 | 亚洲日本欧美日韩高观看 | 亚洲精品一区二区三区不 | 在线观看一区 | 国产免费拔擦拔擦8x高清在线人 | 羞羞视频在线观免费观看 | 欧美一区二区三区在线 | 黄色av网站免费看 | 亚洲视频在线观看网址 | 日韩快播电影网 | 97免费在线观看视频 | 国产精品亚洲精品 | 亚洲一区二区在线播放 | 国产在线一区二区三区 | 中文字幕精品一区 | 一区二区三区四区在线 | 日韩中文字幕 | 操操操日日日 | 伊人逼逼| 欧美精品久 | 狠狠撸在线视频 | 精品国产一区二区三区久久久 | www.色.com| 91视频一88av| 国产精品日本一区二区不卡视频 | 在线播放国产一区二区三区 | 91豆花视频 | 大陆一级毛片免费视频观看 | 伊人av在线| 日韩久久久久久久久久久 | 国产精品视频免费观看 | 亚洲aⅴ天堂av在线电影软件 | 中文字幕一区二区三区乱码图片 | 亚洲欧洲精品视频 | www.99热| 欧美日韩在线免费 | 国产日产精品一区二区三区四区 | 日本一级毛片视频 | 国产亚洲精品成人av久久影院 | 色性视频| 国产精品永久免费 | 超碰一区二区三区 | 欧美午夜一区二区三区 | 羞羞av在线| 国产精品网站在线看 | 在线观看免费成人av | 777色狠狠一区二区三区 | 好姑娘影视在线观看高清 | 男人电影天堂 | 在线观看国产wwwa级羞羞视频 | 激情的网站| 成人做爰9片免费视频 | 日韩精品一区二区三区老鸭窝 | 国户精品久久久久久久久久久不卡 | 一级毛片视屏 | 中文字幕乱码一区二区三区 | 亚洲精品成人悠悠色影视 | 久草视 | 一区二区三区国产在线观看 | 欧美一级在线播放 | 国产精品永久免费视频 | 亚洲精品视频在线 | 亚洲高清一区二区三区 | 国产在线中文字幕 | 超碰97av| 成人二区 | 女人高潮特级毛片 | xvideos.蜜桃一区二区 | 免费看的黄网站 | 久久久久久国产精品 | 亚洲一区二区三区四区在线观看 | 国产精品精品视频一区二区三区 | www.久久| 日韩视频在线观看 | 欧美一级欧美三级在线观看 | 日韩av福利 | 久久久久免费精品视频 | 久久精品一级 | 伊人网在线视频免费观看 | 中文字幕 视频一区 | 日韩欧美一级在线 | 欧美一区永久视频免费观看 | 精品无码久久久久久国产 | 免费特级黄毛片 | 欧洲精品在线观看 | 91国产精品 | 欧美高清性xxxxhdvideosex | 成人欧美一区二区三区 | 欧美一级c片| 一区二区三区国产在线 | 欧美精品久久久 | 在线看一区 | 在线观看一区 | 欧美成人在线免费视频 | 动漫泳衣美女 | 日韩精品一区二区三区 | 99久久久久久 | 三级国产网站 | 日韩av在线中文字幕 | 伊人网视频在线观看 | 久久人妖 | 91精品国产一区二区三区免费 | 国产中文字幕在线观看 | 国产欧美日韩在线 | 嫩草网站在线观看 | 久久精品一区二区三区四区 | 精品在线播放 | 日本一区二区高清不卡 | 国产精品一区二区三区在线播放 | 久久精选视频 | 91色在线观看| 久久久91精品国产一区二区三区 | 国产成人综合一区 | 国产超碰人人爽人人做人人爱 | 成人理论片 | 日韩精品一区二区三区中文字幕 | 天天综合永久入口 | 亚洲精品视频在线 | 羞羞视频在线免费 | 成人h视频 | 91精品国产综合久久国产大片 | 久久99这里只有精品 | 亚洲精品视频在线看 | 国产综合亚洲精品一区二 | 精品视频一区二区 | 国产色99精品9i | 欧美在线视频一区二区 | 草草网 | 不用播放器的毛片 | 午夜午夜精品一区二区三区文 | 精品国产乱码一区二区三区四区 | 亚洲精品一区二区三区99 | 亚洲第1页 | 久久亚洲精品中文字幕 | 国产精品视频久久 | 久久精品无码一区二区日韩av | 国产精品99久久久久久久vr | 最新午夜| 日韩网站免费观看 | 日本亚洲欧美 | 91高清免费 | 国产成人精品a视频一区www | 成年人精品视频 | 四虎免费紧急入口观看 | 一级做a爰片性色毛片2021 | 女人高潮特级毛片 | 偷偷干夜夜拍 | 国产一区二区视频在线观看 | 欧美日韩在线视频一区二区 | 国产精品18久久久久久久久久久久 | 日韩一二三区视频 | 亚洲人免费视频 | 中文字幕亚洲欧美日韩在线不卡 | 97精品一区二区三区 | 美国成人在线 | 国产精品美女视频 | 人妖 丝袜 另类 亚洲 | 男人天堂av网站 | 婷婷激情综合 | www.成人在线视频 | 久久久久久久免费 | 亚洲精品国产第一综合99久久 | 99久久久| 欧美视频免费在线 | 久久精品免费视频观看 | 国产激情偷乱视频一区二区三区 | 97伦理电影院 | 国产精品1区2区3区 国产在线观看一区 | 青娱乐网 | 色无欲天天天影视综合网 | 中文字幕久久久 | 国产一级淫片a级aaa | 操人在线观看 | 久久久一 | 午夜免费高清视频 | 中文字幕亚洲一区二区三区 | 欧美成人一区二区 | 国产最新精品视频 | 国产三级黄色毛片 | 美女超碰在线 | 日韩成人在线观看 | 这里只有精品在线视频观看 | 国产一区二区在线观看视频 | 亚洲欧美国产一区二区三区 | 日本一本在线 | 日韩在线免费视频 | 黄色大片网站在线观看 | 欧美日韩国产在线看 | 国产成人影院 | 亚洲精选免费视频 | 久久免费黄色网址 | 亚洲天堂第一页 | 国产精品大片 | 一区二区三区在线 | 欧美视频在线免费 | 国产激情一区二区三区成人免费 | 性色视频在线 | 午夜免费小视频 | a∨色狠狠一区二区三区 | 成人在线播放器 | 色站综合| 欧美精品综合 | 国产精品久久久久久久午夜 | 久久只有精品 | 台湾佬亚洲色图 | 免费国产一区 | av免费网站 | 欧美精品久久久久久久久久丰满 | 精品在线一区二区三区 | 欧美视频免费在线 | 免费黄在线看 | 久久综合av| 日韩精品 | 色视频网站在线观看 | 国产乱视频 | 久久精品国产免费 | 日日日日干干干干 | 国产成人一区二区 | 黄色一级网站 | 99精品国产高清在线观看 | 欧美福利二区 | 国产一在线 | 涩涩视频在线免费看 | 国产视频2021| 在线日本中文字幕 | 久久69精品久久久久久久电影好 | 北条麻妃国产九九九精品小说 | 欧美福利一区二区三区 | 狠狠躁夜夜躁人人爽视频 | 午夜看片 | 欧美日韩综合视频 | 国产精品久久久久久av公交车 | 精品久久久久久国产 | 国产成人精品一区二区三区视频 | 国产成人精品久久二区二区 | 欧美日韩国产综合网 | 日韩精品免费观看 | 精品国产91久久 | 午夜精品久久久久久久久 | 成人精品久久 | 成人看片网 | 久久99国产精品久久99大师 | 精品久久久久久亚洲综合网 | 91在线免费看 | 亚洲激情一区 | 91麻豆精品国产91久久久更新资源速度超快 | 欧美日韩在线看 | 久久国产精品久久久久久电车 | 成人免费xxxxx在线观看 | 成人午夜 | 欧美二三区 | jizz18国产 | 午夜精品久久久久久久久 | 免费福利视频一区 | 黄网免费看| 在线观看免费视频亚洲 | 欧美一区二区三区成人 | 超碰一区 | 黄色在线免费观看 | 欧美精品久久一区 | 久久久久久国产 | 久久久久国产精品一区二区三区 | 中文字幕一区二区三区乱码图片 | 国产午夜精品一区二区三区嫩草 | 国产精久久 | 久久国产视频一区二区 | 日韩精品中文字幕在线观看 | 在线日韩 | 色综合久久久久 | 欧美成人精品在线观看 | 久久久精品免费观看 | 亚洲精品一区二区在线 | 欧日韩免费视频 | 国内精品国产成人国产三级粉色 | 婷婷激情综合 | 日韩免费一区二区 | 久久久久久亚洲精品视频 | 九九99久久 | 中文字幕一区二区三区四区不卡 | 国产福利91精品一区二区三区 | 欧美一区2区三区4区公司二百 | 精品久久99 | 欧美中文字幕 | 欧美视频在线免费 | 国产精品亚洲综合 | 国产午夜精品一区二区三区嫩草 | 亚洲综合在线视频 | 久久久久久艹 | 国产精品国产三级国产aⅴ原创 | 在线欧美| 亚洲精品字幕 | 五月婷婷激情网 | 久久久香蕉 | a中文字幕 | av高清在线免费观看 | 香蕉久久一区二区不卡无毒影院 | 欧美大片一区 | 玖玖在线精品 | 亚洲成人一区二区三区 | 国产精品永久免费 | 成人高清av | 成人自拍视频 | 欧美一区二区三区精品免费 | 亚洲精品成人av | 欧美激情一区二区三级高清视频 | 99re6在线视频精品免费 | 亚洲高清视频网站 | 亚洲一区二区三区四区五区中文 | 黄色免费网站在线看 | 西西做爰免费视频 | 亚洲精品自在在线观看 | 国产91对白叫床清晰播放 | 国产色视频网站 | 成人高清在线 | 狠狠综合 | 在线色网站 | 色狠狠一区 | 国产1页 | 日韩一区二区黄色片 | 一区二区在线看 | 先锋影音在线 | 米奇影视7777 | 亚洲大尺度视频 | 91久久久久久久久 | 日本不卡一二三 | 国产精品1区2区3区 欧美 中文字幕 | 可以免费看黄视频的网站 | 日韩精品免费在线观看 | 色婷婷一区二区三区四区 | 久久免费小视频 | 久久国产精品视频观看 | 毛片黄片视频 | 在线视频亚洲 | 久久亚洲国产精品日日av夜夜 | 精品一区二区不卡 | 91中文字幕在线观看 | 精品一区二区三区在线观看 | 国产做a爰片久久毛片a我的朋友 | 日本高清中文字幕 | 青青草视频在线免费观看 | 国产免费av网站 | av电影中文字幕在线观看 | 欧美日韩国产在线播放 | 中文字幕亚洲欧美 | 一级黄色大片免费观看 | 99久久夜色精品国产网站 | www.久久久 | 99re在线观看视频 | 久久国产精品一区 | 欧美成人免费一级人片100 | 91精品久久久久久久久久小网站 | 欧美日韩国产在线看 | 亚洲精品久久久久久久久久久 | 美女久久| 成人免费淫片视频观 | 日韩欧美不卡 | 久久aⅴ乱码一区二区三区 91综合网 | 玖玖玖精品视频 | 久久国产一区二区 | 一区二区三区播放 | 精品日韩一区 | 亚洲欧美在线一区二区 | 在线播放国产精品 | 玖玖免费 | 亚洲一区二区三区免费视频 | 日韩欧美国产精品综合嫩v 亚洲欧美日韩在线 | 一区二区三区影院 | 成人免费一区二区三区视频网站 | 亚洲成av | 亚洲福利影院 | 男人天堂网站 | v888av成人 | 伊人激情网 | a免费在线观看 | 欧美日韩亚洲在线 | 视频一区二区三区在线播放 | 91精品国产一区二区三区免费 | 欧美.com | 亚洲男人av | 国产亚洲www | a免费在线 | 国产一区二区三区视频 | 国产一级一级片 | 国产成人精品一区二区三区视频 | 国产91色在线 | 亚洲 | 国产伦精品一区二区三区四区视频 | 成人毛片在线视频 | 日日夜夜精品网站 | 亚洲人成中文字幕在线观看 | 国产精品a一区二区三区网址 | 亚洲成人一区 | 亚洲欧美一区二区三区四区 | 亚洲av一级毛片 | 久久久xxxx| 婷婷五综合 | 亚洲成人动漫在线观看 | 国产成人影院 | 玖草资源| 在线观看亚洲一区 | 狠狠的干 | 在线不卡a资源高清 | 久久久精品免费观看 | 久草电影网| 久久精品国产亚洲 | 久久久久久久久久久久久九 | 国内自拍视频在线观看 | 国产午夜精品久久久 | 国产在线观看91一区二区三区 | 日韩精品一区二区在线观看 | 午夜精品久久久久久久久久久久 | 久久性色 | 婷婷av在线 | 8x国产精品视频一区二区 | 久艹精品 | 色婷婷综合久久久久中文一区二区 | 国产99精品 | 国产欧美日韩综合精品一区二区 | 91精品久久久久久9s密挑 | 天天干天天操天天干 | 欧美第一视频 | 精品视频久久 | 国产精品久久久久久久娇妻 | 亚洲一区二区在线免费观看 | 成人免费网站视频 | 国产精品久久国产精品99 gif | 亚洲一区二区免费看 | 一级毛片免费 | 成人精品国产 | 日韩中文字幕一区二区 | 亚洲视频一区 | 国产在线一区二区 | 中文字幕第一页在线 | 国产在线二区 | 一级黄色毛片免费观看 | 天堂精品一区二区三区 | 亚洲欧美日韩另类精品一区二区三区 | 欧美日韩免费一区二区三区 | hh99me在线观看 | 欧美性久久 | 在线观看免费黄色 |