Динамически загружать элементы в ScrollView - PullRequest
3 голосов
/ 18 декабря 2010

Я пытаюсь создать динамический прокручиваемый вид.Он будет хранить список элементов, загруженных с сервера.В этом списке могут быть тысячи элементов.Из-за этого элементы должны быть загружены в список, поскольку он прокручивается вниз, а также должны быть удалены из верхней части списка, чтобы сохранить низкое использование памяти.Мне также нужно иметь возможность устанавливать различные представления в качестве элементов.

Было бы лучше использовать ScrollView или ListView?И как мне добавить элементы в список и контролировать, когда нужно загружать больше элементов?

Я помню, как наткнулся на пример или учебник о том, как это сделать.Особенно о том, как добавлять элементы при их прокрутке вниз, удалять элементы сверху и создавать различные представления XML для использования в качестве элементов.Я не могу найти этот учебник сейчас.Это было что-то о том, как повторно использовать элементы, когда они выходят, если область видимости при прокрутке, я думаю.

Ответы [ 2 ]

3 голосов
/ 19 декабря 2010

Вы должны использовать ListView, это именно то, для чего он предназначен, и он делает именно то, что вы описываете. :)

См. Это для получения дополнительной информации: http://www.google.com/events/io/2010/sessions/world-of-listview-android.html

2 голосов
/ 18 декабря 2010

Это довольно многочастный вопрос, но я могу помочь с какой-то его частью.Вы можете использовать ScrollView, и я предпочитаю делать это таким образом, поскольку он позволяет вам определять столько элементов пользовательского интерфейса, сколько вы хотите.


Добавление / удаление элементов

Сначала я бы создал макет XML для каждого отдельного элемента списка.Когда вам нужно добавить элемент, вы можете надуть этот макет следующим образом:

LinearLayout clone = (LinearLayout)View.inflate(this, R.layout.sample, null)

Затем вы можете установить информацию об элементе, получив доступ к виджетам в раздувном XML-файле

clone.findViewById(R.id.NameSpace).setText("This is element Johnny")

Я бы установил идентификатор клона на случайно сгенерированный номер или какой-то инкрементный индекс и каким-то образом сохранил бы этот номер (то есть List или int[]), сохранив идентификатор«старые» элементы в передней части устройства хранения.Затем, когда вам нужно получить доступ к элементам, чтобы удалить их, вы можете просто позвонить ScrollView.removeView( findViewById( Storage.get(0) ) ) для первого элемента.

...