Android ListView丢失项目高度

时间:2013-07-11 11:56:33

标签: android listview

所以我有一个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
                }

1 个答案:

答案 0 :(得分:1)

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

您必须将listview的单击位置保留在散列图或布尔数组中(如果列表中的项数较少),使位置索引为true。在getView中,检查是否已使用布尔数组值单击了位置。如果为true,则使按钮可见。否则会让它们看不见。如果想知道如何使用它们,请查看我的答案https://stackoverflow.com/a/13083795/936414