仿餓了嗎點餐界面ListView聯(lián)動的實現(xiàn)
在上篇文章給大家介紹了仿餓了嗎點餐界面兩個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" > <ListView android:id="@+id/lv_menu" android:layout_weight="1" android:layout_height="match_parent" android:layout_width="wrap_content" /> <ListView android: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自帶的函數(shù)setSelection()來關聯(lián)的
比如說,當MenuListView顯示第i項時候,則ItemListView根據i值關聯(lián)到i項的第一個值,然后設置他為當前的setSelection.
代碼中的實現(xiàn)如下:
對MenuListView的item進行監(jiān)聽
mListMenu.setOnItemClickListener(new ListView.OnItemClickListener(){ @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { //設置當前點擊項為i項 mMenuAdapter.setSelectItem(i); mMenuAdapter.notifyDataSetInvalidated();// //設置ItemListView的點擊項為i項的第一個item mListItem.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; @Override public void onScrollStateChanged(AbsListView absListView, int i) { this.scrollState = i; } @Override public void onScroll(AbsListView absListView, int firstVisibleItem, int visibleItemCount, int totalItemCount) { if(scrollState== AbsListView.OnScrollListener.SCROLL_STATE_IDLE){ return; } //判斷當前的item是否是view中第一個可見的item int 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),希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網站的支持!
- 仿餓了嗎點餐界面兩個ListView聯(lián)動效果
- Android中使用開源框架Citypickerview實現(xiàn)省市區(qū)三級聯(lián)動選擇
- Android自定義WheelView地區(qū)選擇三級聯(lián)動
- Android省市區(qū)三級聯(lián)動控件使用方法實例講解
- android-wheel控件實現(xiàn)三級聯(lián)動效果
- Android仿eleme點餐頁面二級聯(lián)動列表
- Android使用android-wheel實現(xiàn)省市縣三級聯(lián)動
- Android實現(xiàn)兩個ScrollView互相聯(lián)動的同步滾動效果代碼
- Android實現(xiàn)三級聯(lián)動下拉框 下拉列表spinner的實例代碼
- 6步輕松實現(xiàn)兩個listView聯(lián)動效果
相關文章
Android新特性頁面之ViewPager拖拽到最后一頁再拖拽打開其他Activity(三種方法)
這篇文章主要介紹了Android新特性頁面之ViewPager拖拽到最后一頁再拖拽打開其他Activity的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-08-08Android 在 res/layout 文件夾 下創(chuàng)建一個 子文件夾實例
這篇文章主要介紹了Android 在 res/layout 文件夾 下創(chuàng)建一個 子文件夾實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-03-03android播放視頻時在立體聲與單聲道之間切換無變化原因分析及解決
使用第三方視頻播放器,有立體聲與單聲道之間切換,發(fā)現(xiàn)切換后無作用,原因是由于在HAL層默認沒有處理上層發(fā)的stereo 轉mono的命令,具體的解決方法如下2013-06-06Android開發(fā)實現(xiàn)自定義水平滾動的容器示例
這篇文章主要介紹了Android開發(fā)實現(xiàn)自定義水平滾動的容器,涉及Android滾動容器的事件響應、屬性運算與修改相關操作技巧,需要的朋友可以參考下2017-10-10Android編程實現(xiàn)監(jiān)聽EditText變化的方法
這篇文章主要介紹了Android編程實現(xiàn)監(jiān)聽EditText變化的方法,涉及Android針對EditText的相關操作技巧,具有一定參考借鑒價值,需要的朋友可以參考下2015-11-11