zoukankan      html  css  js  c++  java
  • android一个页面上多个listview

    android一个页面上多个listview,在滚动的时候,需要两个listview能够一起滚动,看起来是一个view。

    这个功能的具体实现,参考:  

    http://blog.csdn.net/xia296/article/details/8128674

    最主要的代码是:

    	/**
    	 * 设置listview高度,注意listview子项必须为LinearLayout才能调用该方法
    	 * @param listview listview
    	 * 
    	 */
    	public static void  setListViewHeight(ListView listview){  
            int totalHeight = 0;    
           ListAdapter adapter= listview.getAdapter();
           if(null != adapter){
            for (int i = 0; i <adapter.getCount(); i++) {    
            View listItem = adapter.getView(i, null, listview);
    	        if (null != listItem) {
    	        listItem.measure(0, 0);//注意listview子项必须为LinearLayout才能调用该方法
    	        totalHeight += listItem.getMeasuredHeight();
    	        }
            }    
                
            ViewGroup.LayoutParams params = listview.getLayoutParams();    
            params.height = totalHeight + (listview.getDividerHeight() * (listview.getCount() - 1));    
            listview.setLayoutParams(params);  
           }
        }   
    

    具体在代码中的使用这个方法:

        public void loadAdvanceGameView(){
            if (mAdvanceAdapter == null) {
                mAdvanceAdapter = new GameDetailAdapter(mContext, mAdvanceGameList);
                advanceListView.setAdapter(mAdvanceAdapter);
            }else {
                mAdvanceAdapter.notifyDataSetChanged();
            }
            setListViewHeight(advanceListView);
            LoadMyLocalView();
        }
        
        private void LoadMyLocalView() {
            mLocalGameList.clear();
            mLocalGameList.addAll(AppManager.get().getSelectedAppBeans());
            removeRepeatApp();
            if (mLocalAdapter == null) {
                mLocalAdapter = new AppBeanAdapter(mContext, mLocalGameList);
                localListView.setAdapter(mLocalAdapter);
            }else {
                mLocalAdapter.notifyDataSetChanged();
            }
            setListViewHeight(localListView);
        }
    

      

    我在使用的时候,其中listview里面的item的view是用RelativeLayout创建的。

    但是后面测试的时候,在部分机器上报错。

    具体的解决方法参考:

    分析java.lang.NullPointerException thrown in RelativeLayout measure()

    假如开始就是用LinearLayout,就不会报错。

  • 相关阅读:
    leetcode-----118. 杨辉三角
    leetcode-----117. 填充每个节点的下一个右侧节点指针 II
    leetcode-----116. 填充每个节点的下一个右侧节点指针
    leetcode-----115. 不同的子序列
    leetcode-----114. 二叉树展开为链表
    leetcode-----113. 路径总和 II
    leetcode-----112. 路径总和
    leetcode-----111. 二叉树的最小深度
    windows同时安装jdk7和jdk8
    使用乌龟Git连接github
  • 原文地址:https://www.cnblogs.com/zhou-guobao/p/4705034.html
Copyright © 2011-2022 走看看