2013-12-14 56 views
-1

其實我使用AsyncTask獲取好友列表,使用它我可以選擇我想聊天的人。實現AsyncTask獲取好友列表

如果你與單人聊天,它可以正常工作,但是當你移回來選擇另一個人聊天時,AsyncTask會被再次調用。

public class Done extends Activity{ 
    StringBuilder sb; 
    List<RowItems> rowItems; 
    CustomListViewAdapter adapter; 
    private ListView lst; 
    String TYpe; 
    Bitmap img ; 

    List<String> myVal = new ArrayList<String>() ; 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 

     super.onCreate(savedInstanceState); 
     setContentView(R.layout.lists); 
     lst=(ListView)findViewById(R.id.listView1); 
     new MyAsynch().execute(); 
    } 

    private void populate() { 

     rowItems=new ArrayList<RowItems>(); 

     Roster roster = connection.getRoster(); 
     Collection<RosterEntry> entries = roster.getEntries(); 
     ProviderManager.getInstance().addIQProvider("vCard", "vcard-temp", 
     new VCardProvider()); 
     VCard card = null; 
     for (RosterEntry entry : entries) { 
      card = new VCard(); 
      try { 
       card.load(connection, entry.getUser()); 
       } catch (Exception e) { 
       e.printStackTrace(); 
      } 
      String user=entry.getUser(); 

      String name=entry.getName(); 

      Presence entryPresence = roster.getPresence(entry 
      .getUser()); 
      Presence.Type type = entryPresence.getType(); 
      if (type == Presence.Type.available){ 


       byte[] imgs = card.getAvatar(); 
       if (imgs != null) { 
        int len = imgs.length; 
        img = BitmapFactory.decodeByteArray(imgs, 0, len); 
       } 
       RowItems p=new RowItems(user,name,img); 
       rowItems.add(p); 
      } 



     } 

     lst.setOnItemClickListener(new OnItemClickListener(){ 
      @Override 
      public void onItemClick(AdapterView<?> parent, View arg1, int arg2, long arg3) { 
       TextView textViewOne = (TextView)arg1.findViewById(R.id.desc); 
       TextView textViewTwo = (TextView)arg1.findViewById(R.id.title); 
       String item = textViewOne.getText().toString(); 
       String items = textViewTwo.getText().toString(); 
       Toast.makeText(getApplicationContext(), item +"\n"+ items, 
       Toast.LENGTH_LONG).show(); 
       Intent intent = new Intent(Done.this, Chat.class); 
       intent.putExtra("contentOne", item); 
       intent.putExtra("contentTwo", items); 
       startActivity(intent); 
      } 

     }); 
    } 
    private class MyAsynch extends AsyncTask<Void, Void, Void>{ 
     ProgressDialog dialog; 


     @Override 
     protected void onPreExecute() { 
      // TODO Auto-generated method stub 
      super.onPreExecute(); 
      dialog = ProgressDialog.show(Done.this, 
      "Loading...", "Getting friendlist", true); 
     } 
     @Override 
     protected Void doInBackground(Void... arg0) { 

      populate(); 
      return null; 
     } 

     @Override 
     protected void onPostExecute(Void result) { 

      super.onPostExecute(result); 
      adapter= new CustomListViewAdapter(getApplicationContext(), R.layout.activity_listitem, rowItems); 
      lst.setAdapter(adapter); 
      dialog.dismiss(); 
     } 
    } 
+0

人只是選舉權和移動......如果他們不能answer..why他們感興趣的投票 – user3101598

+0

請註明什麼問題,因爲Aysntask的實際發生。如果您遇到任何錯誤或異常提及它。所以我可以理解問題 –

+0

你可以顯示你的logcat錯誤嗎? – keshav

回答

0

嘗試添加到您的代碼,我想當你回來asynctask沒有運行。所以重寫Resume()。

@Override 
    protected void onResume() { 
     // TODO Auto-generated method stub 
     super.onResume(); 
     new MyAsynch().execute(); 
    } 
+0

你能解釋我更多關於這..我的意思是如何工作和幫助我.. – user3101598

+0

你試過這個嗎? – keshav

+0

其實我從來沒有使用它..我不知道它..在哪裏使用它..thatsy問如何使用它,並以這種方式它可能對我有用以後也 – user3101598