重新计算ListView的大小

时间:2014-05-14 08:56:08

标签: android listview

我有ListView,假设有10个项目。每个项目的布局高度为10dp。它使我们ListView的高度为100dp。

现在点击该项目后,我会动态添加一些内容,这会导致项目的高度增加10dp,总共高出20dp。

问题在于,当我增加项目的高度时,ListView的高度保持不变,这会导致底部项目消失 - ListView的高度为100dp而总高度现在的项目是110dp,最终导致最后消失的项目。

我的问题是 - 如何根据商品的新尺寸强制ListView重新计算尺寸?

我尝试使用invalidate(),但它不起作用:

mTestsListView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> adapterView, View v, int position, long id) {
        RelativeLayout basicControlsLayout = (RelativeLayout)v.findViewById(R.id.basicControlsLayout);
        if(basicControlsLayout != null) {
            if(basicControlsLayout.getVisibility() == View.VISIBLE) {
                basicControlsLayout.setVisibility(View.GONE);
            } else {
                basicControlsLayout.setVisibility(View.VISIBLE);

                adapterView.invalidate() // doesn't work
            }
        }
    }
});

在上面的代码段中,您可以看到点击该项后我真正做的是将GONE中的隐藏布局的可见性从VISIBLE更改为{{1}},这会导致项目的高度增加。

2 个答案:

答案 0 :(得分:0)

尝试LinearLayout。 ListView可以处理可滚动/视图重用...,但不能处理动态高度。

答案 1 :(得分:0)

设置为可见后,您需要致电

listViewAdapter.notifyDataSetChanged();