所以我有一个lisview,每行/项隐藏/显示不同的控件。
我会跟踪所有数据并根据我的数据设置 onItemClick 和 getView 中的控件可见性。
然而,这意味着项目的高度不同......但是当用户滚动具有非标准高度的视图项目时,即使其控件可见性设置为 getView
怎么办?有没有办法强制重新计算高度?
public View getView(int position, View convertView, ViewGroup parent) {
View view = convertView;
if(null == view)
{
LayoutInflater vi = (LayoutInflater) thisActivityContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
view = vi.inflate(R.layout.override_listitem_catalog, null);
}
MyListItemExt data = objects.get(position);
if(null != data)
{
// ... do work
}
答案 0 :(得分:1)
滚动列表视图时,重复使用滚动的行并填充新数据。根据您的逻辑,当您在列表项行上设置按钮的可见性时,滚动列表时将不会保持此行的状态,并在重复使用视图时再次到达此位置。
您必须将listview的单击位置保留在散列图或布尔数组中(如果列表中的项数较少),使位置索引为true。在getView中,检查是否已使用布尔数组值单击了位置。如果为true,则使按钮可见。否则会让它们看不见。如果想知道如何使用它们,请查看我的答案https://stackoverflow.com/a/13083795/936414