国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

仿餓了嗎點餐界面ListView聯(lián)動的實現(xiàn)

2019-12-12 05:09:43
字體:
來源:轉載
供稿:網友

在上篇文章給大家介紹了仿餓了嗎點餐界面兩個ListView聯(lián)動效果

主要實現(xiàn)了2個ListView怎樣實現(xiàn)互相關聯(lián),正好上篇博客review了ListView控件常規(guī)使用,因此本篇博客主要對大神的那篇博客的實現(xiàn)進行代碼層的剖析。

一方面,方便自己,在以后的代碼實現(xiàn)上加以參考。另一方面,供剛入門的Android菜鳥們共同學習。

二、最終的效果圖

如上圖效果圖為仿餓了么點餐界面的ListView級聯(lián)

三、實現(xiàn)ListView級聯(lián)的困難點

為了好做區(qū)分,在本文中左側的ListView稱之為MenuListView,右側的ListView稱之為ItemListView。

1.兩個ListView在整個Activity中的Layout布局問題

2.手動點擊MenuListView的item,ItemListView怎么觸發(fā)與之關聯(lián)顯示

如當點擊MenuListView中的“新品套餐”,右側ItemListView的getView如何顯示新品套餐的內容。

3.手動滑動ItemListView時,MenuListView怎么關聯(lián)到當前點擊項

如當手動滑動ItemListView為“飲料類”時,左側的MenuListView的當前點擊Item顯示為飲料類,即背景色為白色。

四、代碼實現(xiàn)

1.ListView的布局問題

看到這個截圖的時候,第一想到的是用權重的顯示,即Android:layout_weight

第一次嘗試

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:orientation="horizontal"><ListViewandroid:id="@+id/lv_menu"android:layout_weight="1"android:layout_height="match_parent"android:layout_width="wrap_content" /><ListViewandroid:id="@+id/lv_item"android:layout_height="match_parent"android:layout_weight="2"android:layout_width="wrap_content" /></LinearLayout>

則效果圖如下:

第二次嘗試,將android:layout_width="wrap_content"替換為android:layout_width="0dp"

則可以按需要顯示。

2.手動點擊MenuListView的item,ItemListView怎么觸發(fā)與之關聯(lián)顯示

MenuListView和ItemListView的關聯(lián)顯示主要是通過listView自帶的函數setSelection()來關聯(lián)的

比如說,當MenuListView顯示第i項時候,則ItemListView根據i值關聯(lián)到i項的第一個值,然后設置他為當前的setSelection.

代碼中的實現(xiàn)如下:

對MenuListView的item進行監(jiān)聽

mListMenu.setOnItemClickListener(new ListView.OnItemClickListener(){@Overridepublic void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {//設置當前點擊項為i項mMenuAdapter.setSelectItem(i);mMenuAdapter.notifyDataSetInvalidated();////設置ItemListView的點擊項為i項的第一個itemmListItem.setSelection(mTitleList.get(i));}});

而i項的第一個item的獲取則是通過如下代碼來實現(xiàn)的

mTitleList = new ArrayList<Integer>();//遍歷所有item.size(),然后將第一個title不同的項對應的值保存起來,則關聯(lián)到每一個item對應到size中的值for (int i=0;i<mfoodDatas.size();i++){  if (i==0){  mTitleList.add(i);}else if(!TextUtils.equals(mfoodDatas.get(i).getTitle(),mfoodDatas.get(i-1).getTitle())){mTitleList.add(i);}}

3.手動滑動ItemListView時,MenuListView怎么關聯(lián)到當前點擊項

mListItem.setOnScrollListener(new AbsListView.OnScrollListener() {private int scrollState;@Overridepublic void onScrollStateChanged(AbsListView absListView, int i) {this.scrollState = i;}@Overridepublic void onScroll(AbsListView absListView,int firstVisibleItem,int visibleItemCount,int totalItemCount) {if(scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){return;}//判斷當前的item是否是view中第一個可見的itemint current = mTitleList.indexOf(firstVisibleItem);if(current!=currentItem && current>0){currentItem=current;//若不是的話,將menuListView的item設置currentItem,來與itemListView關聯(lián)mMenuAdapter.setSelectItem(currentItem);mMenuAdapter.notifyDataSetInvalidated();}}});

以上所述是小編給大家介紹的仿餓了嗎點餐界面ListView聯(lián)動的實現(xiàn),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 石柱| 青龙| 金川县| 温宿县| 临颍县| 乌拉特前旗| 宽城| 姚安县| 聂拉木县| 永仁县| 固始县| 六安市| 无极县| 榕江县| 高雄市| 察隅县| 广丰县| 吴桥县| 苗栗市| 济源市| 台东县| 城市| 麦盖提县| 合肥市| 新野县| 台山市| 玉环县| 蛟河市| 伊宁市| 化隆| 韶山市| 泌阳县| 大理市| 澜沧| 庆元县| 安远县| 佳木斯市| 岳阳县| 高密市| 平顺县| 措勤县|