「EasyEcho」輕松實(shí)現(xiàn)頁(yè)面數(shù)據(jù)回顯和保存椒惨,讓你從無(wú)盡的setText和getText中解脫出來(lái)

先貼地址:https://github.com/AnotherJack/EasyEchoDemo

集成方法

不需要集成,所有的方法都在EasyEcho.java中,直接當(dāng)工具類拷貝到項(xiàng)目中使用

主要功能介紹

通常略步,我們服務(wù)器獲得json數(shù)據(jù)后,會(huì)需要解析為java bean對(duì)象定页,或解析為Map趟薄、List數(shù)據(jù),再顯示到頁(yè)面上典徊。
以下面這個(gè)json數(shù)據(jù)為例

{
    "name": "小明",
    "age": 15,
    "sex": "男",
    "home": "北京",
    "hobby": "看電影",
    "extra": "其他",
    "grades": {
        "chinese": 95,
        "math": 100,
        "english": 90,
        "level": "優(yōu)秀"
    }
}

如果是解析為Map杭煎,則是Map嵌套Map的形式;如果是轉(zhuǎn)為Java Bean卒落,也很簡(jiǎn)單了羡铲,用Gson,GsonFormat插件直接生成Bean類儡毕。

但是無(wú)論哪種方式犀勒,都逃不了往頁(yè)面上賦值這一繁瑣步驟,要findViewById獲取所有的控件妥曲,還要給所有的控件setText(我們公司做政府執(zhí)法軟件的贾费,經(jīng)常一個(gè)頁(yè)面幾十個(gè)錄入項(xiàng) T﹏T)。

使用EasyEcho就可以一行代碼解決這個(gè)問(wèn)題啦檐盟!<( ̄︶ ̄)>

當(dāng)然這要求布局里id字符串(比如R.id.name褂萧,那這里說(shuō)的id字符串就是"name")和服務(wù)器給的數(shù)據(jù)字段名稱有聯(lián)系,以例子來(lái)說(shuō)葵萎,姓名這一項(xiàng)字段為"name"导犹,布局里的id字符串為"name"或是形如"tv_name"這種,只要可以根據(jù)數(shù)據(jù)字段轉(zhuǎn)為id字符串羡忘,那就可以用谎痢。

方法介紹

(一)public static void echoMap(Map map, View parent, IdStrConverterForMap idStrConverter)

作用

把map型數(shù)據(jù)顯示到頁(yè)面上

返回值 void

參數(shù)介紹

1.Map map:要顯示到頁(yè)面上的數(shù)據(jù)
2.View parent:數(shù)據(jù)要顯示的父布局,即決定了在哪個(gè)view上findViewById卷雕。
3.IdStrConverterForMap idStrConverter:接口节猿,需要實(shí)現(xiàn)convert方法,用于把map數(shù)據(jù)字段根據(jù)你自己的命名規(guī)則轉(zhuǎn)為id字符串

(二)public static Map saveAsMap(Map defaultMap, View parent, IdStrConverterForMap idStrConverter)

作用

根據(jù)一個(gè)默認(rèn)map(模板map)把頁(yè)面數(shù)據(jù)保存成map型

返回值 Map

參數(shù)介紹

1.Map defaultMap:默認(rèn)的map漫雕,也相當(dāng)于一個(gè)模板map滨嘱,方法內(nèi)所有的賦值均是在這個(gè)map上操作的,所以在這個(gè)方法執(zhí)行完畢后浸间,原來(lái)傳入的map也改變了太雨。事實(shí)上,返回的map就是這個(gè)defaultMap魁蒜,Java是地址傳遞嘛囊扳。基于這個(gè)原因兜看,建議每次調(diào)用這個(gè)方法時(shí)傳入的defaultMap都是新生成的锥咸。
2.View parent:要保存哪個(gè)父布局下的數(shù)據(jù)
3.IdStrConverterForMap idStrConverter:id字符串轉(zhuǎn)換器

(三)public static void echoBean(Object obj, View parent, IdStrConverterForBean idStrConverter)

作用

把Bean型數(shù)據(jù)顯示到頁(yè)面上

返回值 void

參數(shù)介紹

1.Object obj:要回顯的數(shù)據(jù),Java Bean實(shí)例
2.View parent:數(shù)據(jù)要顯示的父布局
3.IdStrConverterForBean idStrConverter:id字符串轉(zhuǎn)換器铣减,注意這個(gè)是ForBean的她君,convert方法的第二個(gè)參數(shù)和ForMap的有所不同

(四)public static <T> T saveAsBean(Class<T> clazz, View parent, IdStrConverterForBean idStrConverter)

作用

把頁(yè)面數(shù)據(jù)保存成相應(yīng)Bean類型

返回值 即為第一個(gè)參數(shù)傳的Class類型的實(shí)例

參數(shù)介紹

1.Class<T> clazz:Java Bean類,要把頁(yè)面數(shù)據(jù)保存成什么類型的實(shí)體類
2.View parent:要保存哪個(gè)父布局下的數(shù)據(jù)
3.IdStrConverterForBean idStrConverter:id字符串轉(zhuǎn)換器

其他重載方法

以上是四個(gè)主要方法葫哗,還有一些重載方法總體說(shuō)一下缔刹,不再一一介紹
1.第二個(gè)參數(shù)除了可以傳View,也可以傳Activity劣针,傳Activity相當(dāng)于顯示(或保存)該activity根布局上的數(shù)據(jù)校镐。
2.可以不傳idStrConverter,不傳的話默認(rèn)數(shù)據(jù)的字段和id字符串是相等關(guān)系捺典。

注意事項(xiàng)

1.數(shù)據(jù)類型為Map時(shí)鸟廓,echoMap和saveAsMap不回顯(或保存)內(nèi)部嵌套的其他集合類,如List、Set等引谜,只有嵌套的是Map的時(shí)候才會(huì)遞歸操作內(nèi)部Map牍陌。
2.數(shù)據(jù)類型為Bean時(shí),echoBean和saveAsBean不回顯(或保存)集合類(Collection和Map都不操作)员咽,對(duì)于基本類型和字符串會(huì)賦值到頁(yè)面上毒涧,對(duì)于其他類型會(huì)當(dāng)作Bean進(jìn)行遞歸。
3.關(guān)于null贝室,顯示數(shù)據(jù)時(shí)契讲,Map和Bean類型都不對(duì)null進(jìn)行顯示;
保存數(shù)據(jù)時(shí)滑频,defaultMap中值為null的鍵值對(duì)無(wú)法進(jìn)行賦值捡偏,因?yàn)橐ㄟ^(guò)Entry.getValue().getClass()來(lái)獲取map值的類型,進(jìn)而賦值峡迷,如果是null银伟,會(huì)導(dǎo)致空指針。
4.關(guān)于保存數(shù)據(jù)的默認(rèn)值凉当,比如例子中的"extra"字段枣申,在我們的頁(yè)面上是沒(méi)有與之對(duì)應(yīng)的TextView的,但是服務(wù)器又需要這個(gè)字段看杭,就可以考慮設(shè)置默認(rèn)值的方式忠藤。
在saveAsMap中,defaultMap里各個(gè)字段的值就是默認(rèn)值楼雹,對(duì)于頁(yè)面上沒(méi)有控件的字段模孩,會(huì)直接跳過(guò)不予賦值,也就是保持原來(lái)的值贮缅。
在saveAsBean中榨咐,默認(rèn)值可以考慮在Bean實(shí)體類中給成員變量賦值,這樣如果該屬性在頁(yè)面有與之對(duì)應(yīng)的控件谴供,就會(huì)用控件里的值將其覆蓋块茁;反之,沒(méi)有對(duì)應(yīng)的控件時(shí)會(huì)直接跳過(guò)桂肌。
5.保存數(shù)據(jù)時(shí)数焊,數(shù)據(jù)類型有誤時(shí)會(huì)賦值失敗,比如"age"字段應(yīng)該是int型的崎场,可是卻在控件中輸入了"abc"佩耳,這樣就無(wú)法轉(zhuǎn)成int型,所得到的Bean實(shí)例中age會(huì)保持為默認(rèn)值谭跨。

大概就是這么多了干厚,因?yàn)橐彩窍氲侥母牡侥睦畹危赡軙?huì)有不妥的地方,歡迎大家指出蛮瞄。有興趣的可以去github上看代碼所坯,我的注釋寫的還挺詳細(xì)的,如果覺(jué)得有用的話裕坊,歡迎star╰( ̄▽ ̄)╭

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末包竹,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子籍凝,更是在濱河造成了極大的恐慌,老刑警劉巖苗缩,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件饵蒂,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡酱讶,警方通過(guò)查閱死者的電腦和手機(jī)退盯,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)泻肯,“玉大人渊迁,你說(shuō)我怎么就攤上這事≡钚” “怎么了琉朽?”我有些...
    開(kāi)封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)稚铣。 經(jīng)常有香客問(wèn)我箱叁,道長(zhǎng),這世上最難降的妖魔是什么惕医? 我笑而不...
    開(kāi)封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任耕漱,我火速辦了婚禮,結(jié)果婚禮上抬伺,老公的妹妹穿的比我還像新娘螟够。我一直安慰自己,他們只是感情好峡钓,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開(kāi)白布妓笙。 她就那樣靜靜地躺著,像睡著了一般椒楣。 火紅的嫁衣襯著肌膚如雪给郊。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天捧灰,我揣著相機(jī)與錄音淆九,去河邊找鬼统锤。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炭庙,可吹牛的內(nèi)容都是我干的饲窿。 我是一名探鬼主播,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼焕蹄,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼逾雄!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起腻脏,我...
    開(kāi)封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤鸦泳,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后永品,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體做鹰,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年鼎姐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了钾麸。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡炕桨,死狀恐怖饭尝,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情献宫,我是刑警寧澤钥平,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站遵蚜,受9級(jí)特大地震影響帖池,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜吭净,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一睡汹、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧寂殉,春花似錦囚巴、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至村怪,卻和暖如春秽浇,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背甚负。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來(lái)泰國(guó)打工柬焕, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留审残,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓斑举,卻偏偏與公主長(zhǎng)得像搅轿,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子富玷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開(kāi)發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見(jiàn)模式的工具(例如配置管理璧坟,服務(wù)發(fā)現(xiàn),斷路器赎懦,智...
    卡卡羅2017閱讀 134,654評(píng)論 18 139
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語(yǔ)法雀鹃,類相關(guān)的語(yǔ)法,內(nèi)部類的語(yǔ)法铲敛,繼承相關(guān)的語(yǔ)法褐澎,異常的語(yǔ)法,線程的語(yǔ)...
    子非魚_t_閱讀 31,625評(píng)論 18 399
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,807評(píng)論 6 342
  • 一. Java基礎(chǔ)部分.................................................
    wy_sure閱讀 3,810評(píng)論 0 11
  • 原來(lái)的時(shí)候花花草草是我的治愈系伐蒋,自己家里,單位迁酸,父母家先鱼,無(wú)論我在哪個(gè)地方,那里都有我種下的他們奸鬓,回到哪里都可以欣賞...
    花手鞠閱讀 395評(píng)論 1 1