最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android 仿京東、拼多多商品分類頁的示例代碼

 更新時間:2017年08月10日 08:59:08   作者:Kevin是只兔子  
本篇文章主要介紹了Android 仿京東、拼多多商品分類頁的示例代碼,具有一定的參考價值,感興趣的小伙伴們可以參考一下。

最近接了一個項(xiàng)目,要仿照京東寫一個商品分類頁,但需要滑動右邊子分類,左邊的主分類也跟著變換,寫了個demo,需要的同學(xué)可以自取。

先放一個寫完之后的樣子:

寫這個需求的思路也很清晰,首先左邊肯定是一個listView,右邊也是一個listView,這兩個listView要達(dá)到一個聯(lián)動的效果。右邊的listView再嵌套一個GridView即可。如下圖所示。

所以,我們需要的數(shù)據(jù)結(jié)構(gòu)也就確定了,應(yīng)該是數(shù)組套數(shù)組,也就說護(hù)膚大分類下又有子分類商品,類似于這個樣子:


ok,數(shù)據(jù)和UI結(jié)構(gòu)確定了,就可以編寫代碼了

1、先確定主體結(jié)構(gòu),即兩個listView

先不用管上面那個Hello World,那塊兒只是想做一個吸頂?shù)男Ч?/p>

2、將左側(cè)數(shù)據(jù)和右側(cè)數(shù)據(jù)分別渲染

2.1渲染左側(cè)數(shù)據(jù),即:

menuAdapter = new MenuAdapter(this, menuList);
lv_menu.setAdapter(menuAdapter);

很簡單就不贅述了,底部會附上完整代碼鏈接

2.2渲染右側(cè)數(shù)據(jù)

 homeAdapter = new HomeAdapter(this, homeList);
 lv_home.setAdapter(homeAdapter);

在HomeAdapter還需要在嵌套gridView,如下:

 @Override
  public View getView(int position, View convertView, ViewGroup parent) {
    CategoryBean.DataBean dataBean = foodDatas.get(position);
    List<CategoryBean.DataBean.DataListBean> dataList = dataBean.getDataList();
    ViewHold viewHold = null;
    if (convertView == null) {
      convertView = View.inflate(context, R.layout.item_home, null);
      viewHold = new ViewHold();
      viewHold.gridView = (GridViewForScrollView) convertView.findViewById(R.id.gridView);
      viewHold.blank = (TextView) convertView.findViewById(R.id.blank);
      convertView.setTag(viewHold);
    } else {
      viewHold = (ViewHold) convertView.getTag();
    }
    HomeItemAdapter adapter = new HomeItemAdapter(context, dataList);
    viewHold.blank.setText(dataBean.getModuleTitle());
    viewHold.gridView.setAdapter(adapter);
    return convertView;
  }

  private static class ViewHold {
    private GridViewForScrollView gridView;
    private TextView blank;
  }

這里需要說明兩點(diǎn),第一:由于listView嵌套gridView會有眾所周知的問題,計算高度,所以這邊需要重新測量高度,也就重寫了gridView;第二:代碼中的textView是每個子標(biāo)題中主標(biāo)題的名字,也就是需要吸在頂部的。

以上,就將數(shù)據(jù)已經(jīng)可以渲染完成了,現(xiàn)在就是聯(lián)動的問題

3、讓兩部分?jǐn)?shù)據(jù)動起來

3.1 主數(shù)據(jù)聯(lián)動子數(shù)據(jù)

只需要調(diào)用主數(shù)據(jù)的onItemClick()方法,右側(cè)數(shù)據(jù)在復(fù)寫方法中調(diào)用setSelection()方法即可

 lv_menu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
      @Override
      public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        menuAdapter.setSelectItem(position);
        menuAdapter.notifyDataSetInvalidated();
        tv_title.setText(menuList.get(position));
        lv_home.setSelection(showTitle.get(position));
      }
    });

3.2 子數(shù)據(jù)聯(lián)動主數(shù)據(jù)

在onScroll中處理數(shù)據(jù)即可,在將主數(shù)據(jù)的adapter更新一下即可。如代碼所示

lv_home.setOnScrollListener(new AbsListView.OnScrollListener() {
      private int scrollState;

      @Override
      public void onScrollStateChanged(AbsListView view, int scrollState) {
        this.scrollState = scrollState;
      }

      @Override
      public void onScroll(AbsListView view, int firstVisibleItem,
                 int visibleItemCount, int totalItemCount) {
        if (scrollState == AbsListView.OnScrollListener.SCROLL_STATE_IDLE) {
          return;
        }
        int current = showTitle.indexOf(firstVisibleItem);
        if (currentItem != current && current >= 0) {
          currentItem = current;
          tv_title.setText(menuList.get(currentItem));
          menuAdapter.setSelectItem(currentItem);
          menuAdapter.notifyDataSetInvalidated();
        }
      }
    });


4、吸頂效果

這邊有幾種方法都可以實(shí)現(xiàn)類似的效果,我這邊是上面一直有一條,我再將子數(shù)據(jù)都加一個type,當(dāng)type不同時,更換上面那一條的問題即可。

最后,附上git鏈接直達(dá)鏈接

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Android ListView控件使用方法

    Android ListView控件使用方法

    這篇文章主要為大家詳細(xì)介紹了Android ListView控件的使用方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-11-11
  • Android 自動化測試經(jīng)驗(yàn)分享 深入UiScrollable

    Android 自動化測試經(jīng)驗(yàn)分享 深入UiScrollable

    UiScrollable是一個UiCollection(這東西還沒搞懂),我們可以使用它,在可滑動的頁面(水平滑動或上下滑動都可以)上查找我們想要的控件(item)
    2013-05-05
  • 老項(xiàng)目遷移AndroidStudio3.0遇到的坑

    老項(xiàng)目遷移AndroidStudio3.0遇到的坑

    給大家分享了老的項(xiàng)目以及程序遷移到了AndroidStudio3.0遇到的坑和問題解決辦法,希望給你做個參考。
    2017-11-11
  • Android編程實(shí)現(xiàn)等比例顯示圖片的方法

    Android編程實(shí)現(xiàn)等比例顯示圖片的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)等比例顯示圖片的方法,實(shí)例分析了Android等比例縮放圖片的具體步驟與相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • Android編程實(shí)現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法

    Android編程實(shí)現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法

    這篇文章主要介紹了Android編程實(shí)現(xiàn)兩個Activity之間共享數(shù)據(jù)及互相訪問的方法,簡單分析了Android中Activity數(shù)據(jù)共享與訪問的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-11-11
  • android布局優(yōu)化的一些實(shí)用建議

    android布局優(yōu)化的一些實(shí)用建議

    這篇文章主要給大家介紹了關(guān)于android布局優(yōu)化的一些實(shí)用建議,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • android中使用react-native設(shè)置應(yīng)用啟動頁過程詳解

    android中使用react-native設(shè)置應(yīng)用啟動頁過程詳解

    這篇文章主要介紹了android中使用react-native設(shè)置應(yīng)用啟動頁過程詳解,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-07-07
  • 解決Android Studio xml 格式化不自動換行的問題

    解決Android Studio xml 格式化不自動換行的問題

    這篇文章主要介紹了解決Android Studio xml 格式化不自動換行的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-03-03
  • Android Studio給各種控件加邊框的操作方法

    Android Studio給各種控件加邊框的操作方法

    這篇文章主要介紹了Android Studio給各種控件加邊框的操作方法,本文通過圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-12-12
  • Android仿支付寶中余額寶的數(shù)字動畫效果

    Android仿支付寶中余額寶的數(shù)字動畫效果

    最近因?yàn)楣ぷ餍枰叻掠囝~寶數(shù)字動畫效果,達(dá)到炫酷的數(shù)字動畫效果,所以寫出了分享給大家,有需要的朋友可以直接拿來用,下面一起來看看。
    2016-08-08

最新評論

华宁县| 商洛市| 滦平县| 随州市| 绵阳市| 龙山县| 曲阳县| 湟源县| 房山区| 阳春市| 曲阜市| 恩平市| 山东省| 宜兰县| 芮城县| 安龙县| 阳曲县| 嵊州市| 中卫市| 富锦市| 永安市| 黎川县| 江油市| 永胜县| 共和县| 安庆市| 达拉特旗| 子洲县| 三原县| 休宁县| 额尔古纳市| 保亭| 绥阳县| 当阳市| 桃江县| 随州市| 泊头市| 宜兴市| 肃北| 潼南县| 景洪市|