大家好我正在研究应该使用themoviedb.org api的项目来获取有关电影的数据。我有一个附加到我的主要活动的片段,我构建了一个适配器。我的问题是我想用毕加索从themoviedb.org加载电影海报,为此我需要从json数据中读取“poster_path”。我做了异步任务,从json数据中获取所有“poster_path”并将该字符串保存在我在asynctask类中声明的字符串数组中。现在我不知道我应该在哪里执行片段中的asynctask以及如何将该数组传递给我的适配器以便它可以使用它
答案 0 :(得分:0)
Bean
或Pojo
类AsyncTask
onCreate()
轻松达到您的要求。
例如 -
你的Pojo课应该像 -
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数据,例如将联系人姓名设置为
Contact contact = new Contact();
contact.setName("your String fetched from Json");
contact.setEmail("your String fetched from Json");
contactList.add(contact);
我们可以在Adapter类中创建构造函数时将数据传递给适配器。
喜欢:ContactAdapter adapter = new ContactAdapter(contactList);
举一个例子,尝试自己实现。