如何在Java/Android中将整个listview绘制到画布

如何在Java/Android中将整个listview绘制到画布,java,android,listview,canvas,android-listview,Java,Android,Listview,Canvas,Android Listview,我一直在尝试将listView绘制到画布上,以便从中创建PDF文档,但没有成功。问题是我的listView比我的屏幕长,所以9个元素中只有6个在屏幕上,只有这6个元素被绘制出来 我已经尝试了我能想到的一切,但似乎没有任何效果。如何获取整个listView,以便将其绘制到画布上 以下是listView的XML: <RelativeLayout android:layout_width="fill_parent" android:layout_height="fill_pare

我一直在尝试将listView绘制到画布上,以便从中创建PDF文档,但没有成功。问题是我的listView比我的屏幕长,所以9个元素中只有6个在屏幕上,只有这6个元素被绘制出来

我已经尝试了我能想到的一切,但似乎没有任何效果。如何获取整个listView,以便将其绘制到画布上

以下是listView的XML:

<RelativeLayout
    android:layout_width="fill_parent"
    android:layout_height="fill_parent" >

    <ListView
        android:id="@+id/cl_lv_k"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        android:divider="@null"
        android:dividerHeight="0dp" >
    </ListView>
    ....

我用这个页面制作了一个PDF文档,所以我填充了PDF代码的其余部分,它工作了。

我没有尝试过这个,但我可以想象你可以迭代列表项的数量,在适配器上为每个项调用
getView()
,然后按顺序将它们绘制到画布上。@Mike M。我尝试过,有点。我不知道如何使用
getView(int-position,View-convertView,ViewGroup-parent)
,因为我不知道参数(除了
int-position
)。您可以为
convertView
传递null,为
parent
视图组传递ListView本身。我无法让它工作。它看起来很好地抓住了风景,但是无论我怎么尝试,当我去画它的时候,什么都没有显示。我想现在应该有人已经回答了。等我有空的时候,我会看看能不能找到工作。正如我所说,我没有尝试过;这纯粹是猜测。我会告诉你我发现了什么。
ListView listView = (ListView) findViewById (R.id.cl_lv_k);
PageInfo pageInfo = 
                new PageInfo.Builder(pageWidth, 12000, 1).create();
Page page = document.startPage(pageInfo);
Canvas canvas = page.getCanvas();

ChartAdapter adapter = listView.getAdapter(); //this is just a custom adapter
for (int i = 0; i < adapter.size(); i++)
{
    View childView = adapter.getView(i, null, kColumn);
            childView.measure(MeasureSpec.makeMeasureSpec(kColumn.getWidth(),
                                                  MeasureSpec.EXACTLY),
    MeasureSpec.makeMeasureSpec(0, MeasureSpec.UNSPECIFIED));
    childView.layout(0, 0, childView.getMeasuredWidth(),     
                                    childView.getMeasuredHeight());
    childView.setDrawingCacheEnabled(true);
    childView.buildDrawingCache();
    childView.getDrawingCache();
    childView.draw(canvas);
    canvas.translate(0, childView.getMeasuredHeight());
}
....