안드로이드 스크롤뷰안에 리스트뷰가 있을때 높이 계산

스크롤뷰안에 리스트뷰가 있으면 리스트뷰 높이가 자동으로 계산되지 않는다.  즉 수동으로 계산해야 된다.

누군가 공유한게 있어서 적어본다.


	
    private void setListViewHeightBasedOnItems(ListView listView) {

        // Get list adpter of listview;
        ListAdapter listAdapter = listView.getAdapter();
        if (listAdapter == null)  return;

        int numberOfItems = listAdapter.getCount();

        // Get total height of all items.
        int totalItemsHeight = 0;
        for (int itemPos = 0; itemPos < numberOfItems; itemPos++) {
            View item = listAdapter.getView(itemPos, null, listView);
            item.measure(0, 0);
            totalItemsHeight += item.getMeasuredHeight();
        }

        // Get total height of all item dividers.
        int totalDividersHeight = listView.getDividerHeight() *  (numberOfItems - 1);

        // Set list height.
        ViewGroup.LayoutParams params = listView.getLayoutParams();
        params.height = totalItemsHeight + totalDividersHeight;
        listView.setLayoutParams(params);
        listView.requestLayout();
    }


사용예


	
                            private ListView mCctvListView = null;
                            ...
                            mCctvListView.setAdapter(new DssDetailCctvAdapter(mContext, mCctvList));
                            setListViewHeightBasedOnItems(mCctvListView); // 스크롤뷰안에 리스트뷰가 있어서 리스트뷰 높이값 계산 필요.


+ Recent posts