1

所以我有一个 lisview,其中每行/项目隐藏/显示不同的控件。

我跟踪所有数据并根据我的数据在onItemClickgetView中设置控件的可见性。

然而,这意味着项目的高度是不同的......但是当用户滚动一个具有非标准高度的项目时,即使它的控件可见性在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
                }
4

1 回答 1

1

滚动列表视图时,滚动的行被重用并填充新数据。根据您的逻辑,当您在列表项行的单击上设置按钮的可见性时,当您滚动列表并再次到达该位置时,该行的状态将不会保持不变,因为视图正在被重用。

您必须将列表视图的单击位置保留在哈希图或布尔数组中(如果列表中的项目数较少),使位置索引为真。在 getView 中,使用布尔数组值检查该位置是否已被单击。如果为真,则使按钮可见。否则使它们不可见。有关如何使用它们的清晰想法,请查看我的答案https://stackoverflow.com/a/13083795/936414

于 2013-07-11T13:06:51.943 回答