1

したがって、各行/項目が異なるコントロールを非表示/表示するリスビューがあります。

すべてのデータを追跡し、データに応じて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

リストビューをスクロールすると、スクロールされた行が再利用され、新しいデータが入力されます。ロジックによると、リスト項目行の onclick ボタンの可視性を設定すると、ビューが再利用されているため、リストをスクロールしてこの位置に再び来ると、この行の状態は維持されません。

リストビューのクリックされた位置をハッシュマップまたはブール配列 (リスト内の項目数が少ない場合) に保持して、位置インデックスを true にする必要があります。getView で、ブール配列値で位置が既にクリックされているかどうかを確認します。true の場合、ボタンを表示します。それ以外の場合は、それらを非表示にします。それらの使用方法に関する明確なアイデアについては、私の答えを確認してください https://stackoverflow.com/a/13083795/936414

于 2013-07-11T13:06:51.943 に答える