Я пишу простой клиент xmpp в Android, и у меня проблема с обновлением contactList
. Я использую MatrixCursor
с SimpleCursorAdapter
, чтобы сделать это. Когда программа обновляет список, она запускает поток futureTask. Данные в порядке, но список на экране не обновляется, потому что (я думаю) поток этого futureTask ожидает выполнения?
drawContactList
метод вызывается из одного слушателя, когда любой контакт меняет статус. Например, когда я копирую вызов в main, он работает отлично.
Есть идеи как это исправить?
Код:
static ListView contactList;
static MatrixCursor clCursor;
static SimpleCursorAdapter adapterList;
private final String[] matrixCols = new String[] { "_id", "username", "description", "icon" };
private final String[] menuCols = new String[] {"username", "description", "icon" };
private final int[] toWhatId = new int[] { R.id.clUsername, R.id.clDescription, R.id.clStatusIcon };
...
public void drawContactList(ArrayList<Contact> contacts, Context context) {
clCursor = new MatrixCursor(matrixCols);
startManagingCursor(clCursor);
if(contacts != null){
for (Contact contact : contacts) {
clCursor.addRow(new Object[] { contact.id, contact.name, contact.description, contact.icon });
}
}
adapterList = new SimpleCursorAdapter(getApplicationContext(), R.layout.contactlist, clCursor, menuCols, toWhatId);
//in this line futureTask starts
contactList.setAdapter(adapterList);
}