scrollview嵌套listview,其中listview多布局出现的问题

出现的bug 为 Attempt to invoke virtual method 'int android.view.View.getImportantForAccessibility()' on a null object reference

粗心大意,绝对是粗心的问题,getView方法返回为null

由于scrollview嵌套listview会出现问题,所以在使用listview时就使用的是自定义的listview,即重写listview的onMearsure()方法

 @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        // TODO Auto-generated method stub
        int expandSpec = MeasureSpec.makeMeasureSpec(Integer.MAX_VALUE >> 2,
                MeasureSpec.AT_MOST);
        super.onMeasure(widthMeasureSpec, expandSpec);
    }

网上搜的答案一律都是adapter中的gerView方法返回为null,有些人返回null是因为在return convertview的时候粗心写成了return null;但是我的确是写的return convertview。改成原生的listview就不会出现这个问题,可是和scrollview嵌套就会有问题。因此我决定采用第二种方法,就是在加载数据的时候动态计算listview的高度。

   /**
     * 动态设置ListView的高度
     * @param listView
     */
    public void setListViewHeightBasedOnChildren(ListView listView) {
            if(listView == null) return;
            ListAdapter listAdapter = listView.getAdapter();
            if (listAdapter == null) {
                // pre-condition
                return;
            }
            int totalHeight = 0;
            for (int i = 0; i < listAdapter.getCount(); i++) {
                View listItem = listAdapter.getView(i, null, listView);
                listItem.measure(0, 0);
                totalHeight += listItem.getMeasuredHeight();
            }
            ViewGroup.LayoutParams params = listView.getLayoutParams();
            params.height = totalHeight + (listView.getDividerHeight() * (listAdapter.getCount() - 1));
            listView.setLayoutParams(params);
    }

将这个方法设置在

 adapter.notifyDataSetChanged();
 setListViewHeightBasedOnChildren(myListView);

后面,还是会出现这个问题.后来仔细查看自己adapter,是因为在我的adpter中会嵌套使用另一个adapter.

 FrhForumLvItemGvAdapter adapter = new FrhForumLvItemGvAdapter(context, list);
                holder3.gridView.setAdapter(adapter);

然后我就去查看了这个GVAdapter,发现在这个adapter中的getView方法return null!!!!!!

你可能感兴趣的:(scrollview嵌套listview,其中listview多布局出现的问题)