如何在使用onbindviewholder时等待asynctask的完整执行?

时间:2017-06-16 07:54:49

标签: android android-asynctask android-recyclerview

@Override
public void onBindViewHolder(ViewHolder holder, int position) {
    User user = mUsers.get(position);
    String currentuser = FirebaseAuth.getInstance().getCurrentUser().getEmail();
    new AddTodatabase4(user.email,currentuser).execute();
    System.out.println("checking check"+check);

    if(check==1){
        holder.status.setText("message");}

    String alphabet = user.email.substring(0, 1);

    holder.txtUsername.setText(user.email);
    holder.txtUserAlphabet.setText(alphabet);

  //  System.out.println(currentuser+" "+user.email);


}

这里,addtodatabase4扩展了asynctask,check是一个全局变量。我希望保持onbindviewholder的其余执行,直到addtodatabase4完成其执行,因为我在使用settext设置状态textview时需要修改的check值。如何实现这一目标。使用此代码addtodatabse4最后执行。

3 个答案:

答案 0 :(得分:0)

创建一个标志:

public static boolean isDownloadFinished = false;

    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        isDownloadFinished = false;
    }

onPostExecute内设置isDownloadFinished为true

 @Override
 protected void onPostExecute(Boolean success) {
  super.onPreExecute();
   if (success) {
   isDownloadFinished = true;
  }else{
      isDownloadFinished = false;
    }
}

然后:

if(YourClass.isDownloadFinished){
    // do your task here
}

答案 1 :(得分:0)

我将整个视图传递给asynctask,然后在检查条件后自行设置状态textview。

答案 2 :(得分:0)

尝试将holder传递给像

这样的asynctask
new AddTodatabase4(user.email,currentuser, holder).execute();

并在AsyncTask的onPostCreate中的文件夹中设置textViews。

相关问题