2012-09-06 27 views
-1

我正在製作一個段列表首先是待處理請求列表,其次是已經有朋友在列表視圖的第一段中有兩個按鈕接受和拒絕。 當我點擊接受命中服務器並更改stautus,現在我的列表應該是更新和第一節接受列表應顯示在listview的第二部分的好友列表中。 我使用下面的代碼: -爲什麼AsyncTask不能在另一個AsynkTask的PostExecute方法中執行?

public class EntryAdapter extends ArrayAdapter<Item> { 

private Context context; 
private List<Item> items; 
private LayoutInflater objlayoutinflator; 
private PostJobImageLoader objimageLoader; 
private ConnectionFriendListModle objmodle=null; 

public EntryAdapter(Context context,List<Item> items) { 
    super(context, 0, items); 
    this.context = context; 
    this.items = items; 
    objlayoutinflator = (LayoutInflater) context 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    objimageLoader = new PostJobImageLoader(context.getApplicationContext()); 
} 

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View myview = convertView; 

    final Item objitem = items.get(position); 
    if (objitem != null) { 
     if (objitem.isSection()) { 
      SectionItem objsection = (SectionItem) objitem; 
      myview = objlayoutinflator.inflate(R.layout.listviewsection, 
        null); 

      myview.setOnClickListener(null); 
      myview.setOnLongClickListener(null); 
      myview.setLongClickable(false); 

      final TextView sectionView = (TextView) myview 
        .findViewById(R.id.txtsection); 
      sectionView.setText(objsection.getTitle()); 
     } else { 
      objmodle = (ConnectionFriendListModle) objitem; 
      myview = objlayoutinflator.inflate(R.layout.connectionlistrow, 
        null); 
      final TextView title = (TextView) myview 
        .findViewById(R.id.jobtitleinjobbidalert); 
      final TextView subtitle = (TextView) myview 
        .findViewById(R.id.jobsubtitle); 
      final ImageView objimageview = (ImageView) myview 
        .findViewById(R.id.user_image); 
      final Button objaccept = (Button) myview 
        .findViewById(R.id.btnaccept); 
      final Button objreject = (Button) myview 
        .findViewById(R.id.btnreject); 

      if (objmodle.getStatus().equalsIgnoreCase("pending")) { 
       objaccept.setVisibility(View.VISIBLE); 
       objreject.setVisibility(View.VISIBLE); 
       title.setText(objmodle.getUsername()); 
       subtitle.setText(objmodle.getName()); 
       String url = objmodle.getPicture(); 
       objimageLoader.DisplayImage(AppConstants.IMAGE_BASE_URL 
         + url, objimageview); 
      } else { 
       objaccept.setVisibility(View.INVISIBLE); 
       objreject.setVisibility(View.INVISIBLE); 
       title.setText(objmodle.getUsername()); 
       subtitle.setText(objmodle.getName()); 
       String url = objmodle.getPicture(); 
       objimageLoader.DisplayImage(AppConstants.IMAGE_BASE_URL+url, objimageview); 
      } 

      objaccept.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) { 

        new AcceptFriendRequest().execute(objmodle.getId(),"accepted"); 
       } 
      }); 
      objreject.setOnClickListener(new View.OnClickListener() { 

       @Override 
       public void onClick(View v) 
       { 

       } 
      }); 
     } 
    } 
    return myview; 
} 


private class AcceptFriendRequest extends AsyncTask<String,Void,String> 
    { 
    ProgressDialog objprogress = new ProgressDialog(EntryAdapter.this.context); 
    AppRequestHandler objApprequest = new AppRequestHandler(); 
    String objresponce=""; 
     @Override 
     protected void onPreExecute() { 
      objprogress.setMessage("Please Wait While Loading..."); 
      objprogress.show(); 
     } 

     @Override 
     protected String doInBackground(String... params) { 
      objresponce = objApprequest.acceptRequest(params[0],params[1]); 
      return objresponce; 
     } 

     @Override 
     protected void onPostExecute(String result) { 
      if(objprogress.isShowing()) 
      { 
       objprogress.dismiss(); 
      } 
      if(result.equals("0")) 
      { 
       SharedPreferences myPrefs = EntryAdapter.this.context.getSharedPreferences(
         AppConstants.MYPREF, EntryAdapter.this.context.MODE_WORLD_READABLE); 
       String userid = myPrefs.getString(AppConstants.USER_ID, ""); 

           //but when controll reach this line not execute this asynctask and niether update listview 
       new GetAllConnectionDetail().equals("86"); 

      } 
     } 
    } 

private class GetAllConnectionDetail extends AsyncTask<String,Void,List<Item>> 
    { 
    ProgressDialog objprogress = new ProgressDialog(EntryAdapter.this.context); 
    AppRequestHandler objApprequest = new AppRequestHandler(); 
    List<Item> objlistitem=null; 
     @Override 
     protected void onPreExecute() { 
      objprogress.setMessage("Please Wait While Loading..."); 
      objprogress.show(); 
     } 

     @Override 
     protected List<Item> doInBackground(String... params) { 
      objlistitem = objApprequest.connectionDetails(params[0]); 
      return objlistitem; 
     } 

     @Override 
     protected void onPostExecute(List<Item> result) { 
      if(objprogress.isShowing()) 
      { 
       objprogress.dismiss(); 
      } 
       items.clear(); 
       items.addAll(result); 
       notifyDataSetChanged(); 
     } 

    } 

}

是我要去正確的方式或錯誤請任何一個可以幫助我,爲什麼它不工作...

回答

2

你必須要對你GetAllConnectionDetail任務通過調用其execute方法,似乎你不這樣做。

+0

是的這是對的,但沒有更新列表 –

+0

@Sandeep Tiwari你是什麼意思? –

相關問題