不确定在片段中使用asyncTask的位置

时间:2016-11-07 13:12:32

标签: android android-asynctask fragment android-adapter

大家好我正在研究应该使用themoviedb.org api的项目来获取有关电影的数据。我有一个附加到我的主要活动的片段,我构建了一个适配器。我的问题是我想用毕加索从themoviedb.org加载电影海报,为此我需要从json数据中读取“poster_path”。我做了异步任务,从json数据中获取所有“poster_path”并将该字符串保存在我在asynctask类中声明的字符串数组中。现在我不知道我应该在哪里执行片段中的asynctask以及如何将该数组传递给我的适配器以便它可以使用它

1 个答案:

答案 0 :(得分:0)

  • 创建BeanPojo
  • 创建 setters getters
  • AsyncTask
  • 中创建onCreate()
  • API 获取数据,并制作内容的 ArrayList
  • ArrayList 传递给适配器
  • 并将内容设置为适配器类
  • 中的视图

轻松达到您的要求。

例如 -

你的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);

举一个例子,尝试自己实现。