Editable items в ListView

Є ListView забитий текстом (по рядку в item), хочеться щоб при натисканні на item полі можна буде редагувати і збоку два маленькі значки, підтвердити або скасувати.

Мені здається це має бути стандартний API. тільки не знаю, як зробити.

І ще питання наприклад як мені зробити, щоб можна було виділяти кілька item або є кнопочка - виділити все. Теж має бути стандартне API.

Або підкажіть де глянути як це робити.

А щодо зміни даних прямий у списку — якщо ви збираєтеся перевикористовувати юшку, що приходить у метод getView, вам необхідно в адаптері пам'ятати позицію елемента, що редагується, і в getView перевіряти, чи вона це, чи ні. І просто видавати відповідну юшку.

Тоді можна зробити приблизно такий адаптер:

І, відповідно, у потрібних ліснерах додавати/видаляти позицію зі списку mEditPositions. Сподіваюся зрозуміло як працює =)

PS: якщо комусь не подобається код і може запропонувати рішення краще – welcome :D

Ну звісно, ​​все зрозуміло, але чи ви мене не до кінця зрозуміли, чи то я Вас… для початку: — я побудував список наприклад з 10 items, у кожному з них рядок. - зробив одиночний клік, view змінився.

У коді ви мені пропонуєте розрізняти, який view потрібно буде будувати, це зрозуміло, але! звідки мій адаптер знатиме, що я хочу в режимі реального часу відредагувати на приклад 5 item. Мається на увазі робота з ListView в реальному часі, а не в процесі його будівництва…

з приводу редагування елементів — як-от:

при цьому кореневий елемент у розмітці item'a має бути . Layout

Погана порада — якщо робити так, то після першого ж відходу елемента, що редагується, з екрану, почнетьсясвистопляска всього ListView. Т.к. у вашому прикладі змінена View v буде передана для відображення іншого елемента списку, але цього робити не треба. І в той же час, після повернення цієї позиції на екран, для її відтворення може бути передана інша юшка, і EditText пропаде.

Саме перевизначення методів getItemViewType і getViewTypeCount дозволяє не турбуватися про те, яка юшка нам приходить - вона прийде або вірна, або null в метод getView.