2017-06-16 132 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的​​。