Привет, ребята, я работаю над проектом, который должен использовать themoviedb.org api для получения данных о фильмах. У меня есть фрагмент, прикрепленный к моей основной деятельности, и я построил адаптер. Моя проблема в том, что я хочу использовать picasso для загрузки плакатов фильма из themoviedb.org, и для этого мне нужно прочитать «poster_path» из json-данных. Я сделал асинхронную задачу, которая берет все «poster_path» из json-данных и сохраняет эти строки в массиве строк, которые я объявил в классе asynctask. Теперь я не знаю, где я должен выполнить AsyncTask в фрагменте и как передать этот массив в мой адаптер, чтобы он мог использовать егоНе знаете, где использовать asyncTask в фрагменте
ответ
- Создать
Bean
илиPojo
класс - Создать сеттеры и геттеры
- Создать
AsyncTask
вonCreate()
- Fetch данные из API и сделать ArrayList вашего содержания
- Pass ArrayList в адаптер
- и установить содержание взглядов в адаптер класса
Чтобы легко достичь ваших требований.
Для ПРИМЕР-
Ваш класс Pojo должен быть как
as-public class Contact {
public int id;
public String contacName;
public String contactEmail;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getContacName() {
return contacName;
}
public void setContacName(String contacName) {
this.contacName = contacName;
}
public String getContactEmail() {
return contactEmail;
}
public void setContactEmail(String contactEmail) {
this.contactEmail = contactEmail;
}
}
Ваш класс адаптера должен быть вроде как -
public class ContactAdapter extends RecyclerView.Adapter<ContactAdapter.mViewHolder> {
// list of Contact type items
private List<Contact> contactList;
public ContactAdapter(List<Contact> contactList){
this.contactList = contactList;
}
@Override
public mViewHolder onCreateViewHolder(ViewGroup parent, int viewType) {
//inflaing item layout and return to holder
View view = LayoutInflater.from(parent.getContext()).inflate(R.layout.item_contact,
parent,false);
return new mViewHolder(view);
}
@Override
public void onBindViewHolder(mViewHolder holder, int position) {
//Binding data with views
Contact mContect = contactList.get(position);
holder.txtName.setText(mContect.getContacName());
holder.txtEmail.setText(mContect.getContactEmail());
}
@Override
public int getItemCount() {
return contactList.size();
}
public static class mViewHolder extends RecyclerView.ViewHolder{
TextView txtName;
TextView txtEmail;
public mViewHolder(View itemView) {
super(itemView);
txtName = (TextView) itemView.findViewById(R.id.contactName);
txtEmail = (TextView) itemView.findViewById(R.id.contactEmail);
}
}
}
Теперь создать список класса Pojo, например List<Contact> contactsList = new ArrayList<>;
. Теперь анализировать данные JSon accrodingly, как заданное имя контактного лица, как
Contact contact = new Contact();
contact.setName("your String fetched from Json");
contact.setEmail("your String fetched from Json");
contactList.add(contact);
Вы можете передать ваши данные к адаптеру, как мы создали конструктор в классе адаптера. like: ContactAdapter adapter = new ContactAdapter(contactList);
Примите его и попытайтесь реализовать себя.
спасибо, у меня есть другой вопрос: где я должен объявить arraylist, если в классе asynctask так, как пройти? к адаптеру, и если в компоненте или фрагменте, как добавить данные из этого, асинхронность на то, что –
забыл пометить вас до –
http://www.androidhive.info/2012/01/android-json-parsing-tutorial/ взять его пример для лучшего понимания, как анализировать данные Json и связывать данные с адаптером. – Akshay
- 1. Использование asynctask в фрагменте
- 2. Не знаете, где проблема?
- 3. AsyncTask на фрагменте
- 4. Не знаете, где ошибка сегментации
- 5. Как отменить AsyncTask во фрагменте
- 6. База данных Android в AsyncTask в фрагменте
- 7. Проблемы с AsyncTask во фрагменте
- 8. Размещение AsyncTask в действии или фрагменте?
- 9. Результат перехода AsyncTask в onCreateView в фрагменте
- 10. Asynctask в фрагменте или родительской активности?
- 11. AsyncTask Результат для использования в фрагменте
- 12. PRISM + MEF + MVVM - Не знаете, где начать?
- 13. Почему в фрагменте AsyncTask отсутствует фрагмент представления?
- 14. Отменить AsyncTask в фрагменте in onPause
- 15. Использование AsyncTask для получения данных в фрагменте
- 16. Не знаете, где статья этого запроса SQL
- 17. Не знаете, как использовать AJAX
- 18. Разработка Android - Неверная реализация AsyncTask в фрагменте?
- 19. Не знаете, как использовать Math.pow()
- 20. адаптер работал в фрагменте onCreateView, но не в Asynctask onPostExecute
- 21. Не знаете, как использовать методы в классе
- 22. Не знаете, как использовать функцию `$`
- 23. как добавить класс AsyncTask в фрагменте
- 24. Пользовательский ListView с Asynctask, не работающим в фрагменте
- 25. Не знаете, где разместить Scripts.Render для JQuery
- 26. Проблемы с zeroclipboard не знаете, где смотреть
- 27. Ошибка указателя IndexArrayOutOfBoundsException. Не знаете, где ошибка?
- 28. не знаете, как использовать XmlNode в C#
- 29. doInBackground не работает в фрагменте (Error Fatal исключение: AsyncTask # 1)
- 30. Где получить контент в фрагменте?
Выключить 'AsyncTask' в' onCreate() 'и использовать его в' onPostExecute() 'вашего определения' AsyncTask'. – Knossos
Пожалуйста, покажите свой код как [mcve]. –
Рассматривали ли вы использование других, более простых сетевых библиотек, таких как Retrofit, OkHttp или Volley? –