2014-10-04 6 views
1

Я кодирую приложение Xamarin для Android, и у меня есть вопрос относительно адаптера GridView.Использование метода async в адаптере GridView Метод GetView

Возможно ли использовать ключевое слово async с методом GetView? У меня есть функция await, которую я хочу использовать в методе GetView, который извлекает изображения асинхронно для каждого элемента GridView?

В настоящее время метод:

public override View GetView (int position, View convertView, ViewGroup parent) 

Я ищу что-то что эквивалентно:

public async override Task<View> GetView (int position, View convertView, ViewGroup parent) 

Однако, я получаю эту ошибку:

'SimpleMapDemo.GridViewWithImageAndTextAdapter.GetView(int, Android.Views.View, Android.Views.ViewGroup)': return type must be 'Android.Views.View' to match overridden member 'Android.Widget.BaseAdapter.GetView(int, Android.Views.View, Android.Views.ViewGroup)' 

Возможно ли это? Если нет, возможно ли запустить фоновый процесс в каждом методе GetView для получения требуемых изображений асинхронно или мне нужно попробовать другой подход?

Заранее спасибо

ответ

1

Вы не можете использовать ждать, потому что у вас есть доступ к UI из потока пользовательского интерфейса и, таким образом, это не имеет смысл использовать метод асинхронного. Не существует такого метода.

Это еще один вариант, о котором вы говорили, это путь. Здесь см. Мой ответ здесь Image is assigned to another row item of ListView

+0

Ваш другой ответ, который вы связаны с гораздо лучше, чем при использовании 'ContinueWith'. – EvilTak

0

Вы всегда можете использовать ContinueWith() по вашему ожидаемому методу (при условии, что он возвращает Task).

... 
YourMethod().ContinueWith(t => 
    { 
     //Whatever you need to execute when YourMethod() finishes 
    }); 
... 

Вот more info на ContinueWith()

0

Вы можете запустить свою задачу так:

Task.Run(async delegate() => { 
     await AsyncMethod().ContinueWith(() => { 
      Context.InvokeOnMainThread(() => { 
       //DO YOUR UI STUFF HERE!! 
       }); 
     }); 
}); 
Смежные вопросы