Как определить ListViewItem для обновления одной строки - PullRequest
1 голос
/ 11 мая 2010

У меня в ListView отображается информация об объекте. Когда я щелкаю элемент ListView, я открываю Activity, которая позволяет мне манипулировать параметрами объекта, содержащегося в адаптере. Эти параметры обновляются и хранятся удаленно.

Когда я возвращаюсь к ListView (с помощью кнопки «Назад»), я хочу обновить элемент ListView, который я изначально щелкнул, запросив значения параметров с удаленного сервера.

В настоящее время я делаю это, обновляя весь ListView, очищая и перестраивая его.

Как мне обратиться к элементу ListView, чтобы я мог обновить данные только для этого элемента?

Спасибо, Jason

Ответы [ 2 ]

1 голос
/ 11 мая 2010

Зная положение вида, это можно сделать.

View singleItemView = myListView.getChildAt(position);
ImageView icn = (ImageView) singleItemView.findViewById(R.id.icn_icon);
ProgressBar prg = (ProgressBar) singleItemView.findViewById(R.id.prg_icon);
icn.setVisibility(View.GONE);
prg.setVisibility(View.VISIBLE);

(EDIT) Это не работает, потому что «позиция» представления может быть изменена после возврата из другого действия. После запуска onResume () вызывается getView (), и позиции видимых элементов ListView нумеруются начиная с 0. Таким образом, элементы ListView (id и position) нумеруются в зависимости от видимости. В результате я получаю доступ к неправильному объекту.

1 голос
/ 11 мая 2010

Просто установите данные для вашего адаптера и наберите notifyDatasetChanged. Android в любом случае рисует только те строки, которые видны, поэтому он довольно эффективен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...