我有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}},这会导致项目的高度增加。
答案 0 :(得分:0)
尝试LinearLayout。 ListView可以处理可滚动/视图重用...,但不能处理动态高度。
答案 1 :(得分:0)
设置为可见后,您需要致电
listViewAdapter.notifyDataSetChanged();