幾種recycleview的嵌套布局-解決辦法

這段時(shí)間在做一個(gè)商城項(xiàng)目矿筝,其中遇到recycleview的幾個(gè)嵌套問(wèn)題,首先是首頁(yè)布局棚贾,然后是訂單布局嵌套窖维,再然后就是顏色、尺碼的彈出框妙痹。

1铸史、先說(shuō)第一種,首頁(yè)布局是最復(fù)雜怯伊,涉及到很多形式琳轿,最為常見的解決模式就是把每一行視為一個(gè)item,根據(jù)數(shù)據(jù)類型不同返回不同的布局格式耿芹,也就是枚舉崭篡。因?yàn)榇a太長(zhǎng),這里就只說(shuō)說(shuō)思路吧秕,貼幾段關(guān)鍵代碼琉闪。

因?yàn)槲疫@邊后臺(tái)沒(méi)有返回判斷標(biāo)識(shí),所以我是通過(guò)獲取后臺(tái)返回?cái)?shù)據(jù)后對(duì)數(shù)據(jù)進(jìn)行加工砸彬,像這樣颠毙。

for(HomeActivity.FloorsBean floorsBean : floorsLoginList) {

//循環(huán)最外圈的數(shù)據(jù)斯入,作為第一條

HomeItem homeItemTitle =newHomeItem();

homeItemTitle.setItemType(ItemType.TITLE);

homeItemTitle.setTitle(floorsBean.getTitle());

homeItemTitle.setBanner(floorsBean.getBanner());

homeItemTitle.setTop(floorsBean.getTop());

homeItemList.add(homeItemTitle);

if(floorsBean.getProducts().size() <=3) {

HomeItem homeItemContent =newHomeItem();

homeItemContent.setItemType(ItemType.CONTENT);

homeItemContent.setProducts(floorsBean.getProducts());

homeItemList.add(homeItemContent);

}else{

List productsBeanList =newArrayList<>();//每三個(gè)一組的list

for(inti =0;i < floorsBean.getProducts().size();i++) {//循環(huán)產(chǎn)品信息

productsBeanList.add(floorsBean.getProducts().get(i));

if((i +1) %3==0) {

HomeItem homeItemContent =newHomeItem();

homeItemContent.setItemType(ItemType.CONTENT);

homeItemContent.setProducts(productsBeanList);

homeItemList.add(homeItemContent);

productsBeanList =newArrayList<>();

}else if((i +1) % floorsBean.getProducts().size() ==0) {

HomeItem homeItemContent =newHomeItem();

homeItemContent.setItemType(ItemType.CONTENT);

homeItemContent.setProducts(productsBeanList);

homeItemList.add(homeItemContent);

}

}

}

}

這個(gè)是比較簡(jiǎn)單的,只有兩種類型蛀蜜,一種是分類的title刻两,一種是每三個(gè)一行的content,就是這樣對(duì)數(shù)據(jù)進(jìn)行加工再放入到adapter涵防,對(duì)不同類型加載不同布局闹伪,后面相信大家也做過(guò)很多沪铭。

但是做完后感覺(jué)加載較慢壮池,所以如果后臺(tái)能做到的話,最好是后臺(tái)能返回分類標(biāo)識(shí)杀怠。


2椰憋、訂單布局。

? ? ? 訂單布局相對(duì)簡(jiǎn)單點(diǎn)赔退,布局像下面這樣


像這樣的布局橙依,有人介紹是直接recycleview嵌套recycleview,商品不確定有多少件硕旗,需要一個(gè)recycleview窗骑,確認(rèn)收貨那一欄根據(jù)狀態(tài)也不確定有多少個(gè),當(dāng)然你也可以根據(jù)不同的狀態(tài)來(lái)寫死布局漆枚。最后创译,最外面的一層布局肯定也是一個(gè)recycleview,因?yàn)闀?huì)有多個(gè)訂單墙基。但是這種做法需要解決recycleview的資源釋放等問(wèn)題软族,容易卡頓,個(gè)人不是很看好残制。

我的做法是商品和確認(rèn)收貨狀態(tài)欄布局都用linelayout立砸,通過(guò)linelayout來(lái)動(dòng)態(tài)添加view,下面是部分代碼

if(viewHolder.myorder_allOrderLL.getChildCount() !=0) {

viewHolder.myorder_allOrderLL.removeAllViews();

}

for(intj =0;j < order.getOrderList().size();j++) {

Order.RDataBean.RowsBean.OrderListBean orderDetail = order.getOrderList().get(j);

number += orderDetail.getNum();

View view = LayoutInflater.from(context).inflate(R.layout.order_recycleview_item, null);

view.setLayoutParams(newLinearLayout.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT,250));

TextView myorder_recycleview_item_saleNameTv = (TextView) view.findViewById(R.id.myorder_recycleview_item_saleNameTv);

TextView myorder_recycleview_item_salePriceTv1 = (TextView) view.findViewById(R.id.myorder_recycleview_item_salePriceTv1);

TextView myorder_recycleview_item_colorTv = (TextView) view.findViewById(R.id.myorder_recycleview_item_colorTv);

TextView myorder_recycleview_item_numberTv = (TextView) view.findViewById(R.id.myorder_recycleview_item_numberTv);

ImageView myorder_recycleview_item_PhotoIv = (ImageView) view.findViewById(R.id.myorder_recycleview_item_PhotoIv);

Glide.with(context).load(Config.Image_Url+ orderDetail.getImage())

.placeholder(R.mipmap.log1)

.error(R.mipmap.log1)

.crossFade()

.diskCacheStrategy(DiskCacheStrategy.SOURCE)

.into(myorder_recycleview_item_PhotoIv);

myorder_recycleview_item_saleNameTv.setText(orderDetail.getTitle());

myorder_recycleview_item_salePriceTv1.setText(orderDetail.getPrice() +"");

myorder_recycleview_item_colorTv.setText(orderDetail.getSkuText());

myorder_recycleview_item_numberTv.setText(orderDetail.getNum() +"");

viewHolder.myorder_allOrderLL.addView(view);

}

首先判斷l(xiāng)inelayout里是否含有view初茶,有就移除颗祝,以免累加view。然后通過(guò)數(shù)據(jù)的多少來(lái)動(dòng)態(tài)添加view恼布。

這個(gè)方法簡(jiǎn)單并且不會(huì)卡頓吐葵。


3、最后就是顏色桥氏、尺碼的彈框問(wèn)題了温峭,像這樣的布局。


一行顯示三個(gè)字支,如果數(shù)據(jù)較少凤藏,沒(méi)有超過(guò)屏幕半屏奸忽,可能不需要外面包裹一個(gè)scrollview,但是有時(shí)候數(shù)據(jù)多的時(shí)候就需要了揖庄,那么就是scrollview嵌套多個(gè)recycleview的形式了栗菜,我的需求是要求整體滾動(dòng),單個(gè)recycleview不能滾動(dòng)蹄梢,最簡(jiǎn)單做法是這樣的疙筹。

用android.support.v4.widget.NestedScrollView包裹里面的recycleview,然后加上這幾句代碼就可以解決了禁炒,

GridLayoutManager sizeGridLayoutManager =newGridLayoutManager(context,3);

sizeGridLayoutManager.setSmoothScrollbarEnabled(true);

sizeGridLayoutManager.setAutoMeasureEnabled(true);

sizeRv.setLayoutManager(sizeGridLayoutManager);

sizeRv.setHasFixedSize(true);

sizeRv.setNestedScrollingEnabled(false);

前提是support包是24.0以上而咆。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市幕袱,隨后出現(xiàn)的幾起案子暴备,更是在濱河造成了極大的恐慌,老刑警劉巖们豌,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件涯捻,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡望迎,警方通過(guò)查閱死者的電腦和手機(jī)障癌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)辩尊,“玉大人涛浙,你說(shuō)我怎么就攤上這事《允。” “怎么了蝗拿?”我有些...
    開封第一講書人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)蒿涎。 經(jīng)常有香客問(wèn)我哀托,道長(zhǎng),這世上最難降的妖魔是什么劳秋? 我笑而不...
    開封第一講書人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任仓手,我火速辦了婚禮,結(jié)果婚禮上玻淑,老公的妹妹穿的比我還像新娘嗽冒。我一直安慰自己,他們只是感情好补履,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開白布添坊。 她就那樣靜靜地躺著,像睡著了一般箫锤。 火紅的嫁衣襯著肌膚如雪贬蛙。 梳的紋絲不亂的頭發(fā)上雨女,一...
    開封第一講書人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音阳准,去河邊找鬼氛堕。 笑死,一個(gè)胖子當(dāng)著我的面吹牛野蝇,可吹牛的內(nèi)容都是我干的讼稚。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開眼绕沈,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼锐想!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起七冲,我...
    開封第一講書人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤痛倚,失蹤者是張志新(化名)和其女友劉穎规婆,沒(méi)想到半個(gè)月后澜躺,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡抒蚜,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年掘鄙,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片嗡髓。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡操漠,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出饿这,到底是詐尸還是另有隱情浊伙,我是刑警寧澤,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布长捧,位于F島的核電站嚣鄙,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏串结。R本人自食惡果不足惜哑子,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望肌割。 院中可真熱鬧卧蜓,春花似錦、人聲如沸把敞。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奋早。三九已至盛霎,卻和暖如春冒冬,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背摩渺。 一陣腳步聲響...
    開封第一講書人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工简烤, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人摇幻。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓横侦,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親绰姻。 傳聞我的和親對(duì)象是個(gè)殘疾皇子枉侧,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348

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