2017-06-16 134 views
0
@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时检查的修改值。如何实现这一点。使用这个代码addtodatabse4在最后执行。如何在使用onbindviewholder时等待asynctask的完整执行?

+0

在任务完成后的任务'onPostExecute'中放置你想要做的事情。 –

回答

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 
} 
+0

不工作.... –

+0

即使asynctask.get不工作... onbindview函数首先设置不同的视图。 –

+0

你在哪里调用'recyclerView.setAdapter(adapter);'? –

0

嗯,我通过了整个viewholder到的AsyncTask,然后检查病情后,将我的状态TextView的存在本身。

0

尝试传递一个holder到的AsyncTask像

new AddTodatabase4(user.email,currentuser, holder).execute(); 

,并设置在支架的textViews中的AsyncTask的​​。