2012-02-03 20 views
0
public class HomeActivity extends Activity{ 


// public ArrayList<User> users1 = new ArrayList<User>(); 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     // ListView lv = (ListView) findViewById(R.id.user_crumbs_list); 

    final ArrayList<User> users1 = new ArrayList<User>(); 
    User user = null; 
     class AsyncLoader extends AsyncTask<User,Void, ArrayList<User>> { 
      ProgressDialog dialog; 

     @Override 

     protected void onPreExecute(){ 

       dialog = new ProgressDialog(HomeActivity.this); // App - your main activity class 
       dialog.setMessage("Please, wait..."); 
       dialog.show(); 
     } 

     @Override 
     protected ArrayList<User> doInBackground(User... users) { 
      String response = ""; 

      for (User user:users) 

       try { 

        try { 
         user = new User("4eeb34c6d80e8f1214000000"); 
         user.getFollowingCrumbsUpList(); 
        } catch (IOException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } catch (JSONException e) { 
         // TODO Auto-generated catch block 
         e.printStackTrace(); 
        } 





        for(User u : user.following){ 
         users1.add(u); 
        } 



       } catch (Exception e) { 
        e.printStackTrace(); 
       } 

     return users1; 
     } 

     protected void onPostExecute(String result) { 
      dialog.dismiss(); 
      return; 

     } 


     } 






     AsyncLoader task = new AsyncLoader(); 
     task.execute(user); 



     setContentView(R.layout.user_main_tab_home); 
     final UserFollowingListAdapter csl = new   UserFollowingListAdapter(this,R.layout.user_list_item,users1,this); 
     ListView lv = (ListView) findViewById(R.id.user_list);   









     public void showError(){ 
     new AlertDialog.Builder(this) 
     .setTitle(" Oops , Server down :(") 
     .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 

      @Override 
      public void onClick(DialogInterface arg0, int arg1) { 
       // TODO Auto-generated method stub 

      } 
      // 
     }).setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int whichButton) { 
       // Do nothing. 
      } 
     }).show(); 

     } 
} 

これは、データがまったく読み込まれず、ダイアログが無限ループでクリックされるまで無限ループになります。私の目標は、初期量のデータをロードして、ユーザーのスクロールごとにデータをフェッチすることです。今のところ、私はデータを表示することさえできません。AsyncTaskが正しくデータをロードしていません。

デバッグ後、私はuser1変数に値が格納されていないことが分かりました。なぜなら、反復が行われているにもかかわらず、その理由を見つけることができないからです。

どこが間違っているかについての手掛かりはありますか?

答えて

1

私は本当にあなたがが何ををしようとしているものをフォローすることはできませんが、問題がありそうuserがnullの場合、一度あなたがtask.execute(user);を呼び出す、という事実にあります。したがって、AsyncTask内のfor (User user:users)には反復処理する項目がありません。

+0

ご覧のとおり、AsyncTaskクラス内でユーザーを再度定義しました。そのヌルではない。私はそれをデバッグしました。 – Hick

+0

私が行っているのは、すべてのデータを表示するだけです。今のところ、それが私がしたいことです。次に、画面に表示するデータの量を制限します。 – Hick

+0

十分に公正...私が言ったように、あなたのロジックは少し難しいです。あなたがそれをデバッグした場合、どこがハングアップしていますか?私たちが見ることのできない、したがって疑わしいコードは 'getFollowingCrumbsUpList()'だけです。アプリケーションが実行されている間、EclipseのDDMSパースペクティブに入り、アプリケーションのスレッドを表示します。 AsyncTaskを見つけて、特にどこかでハングアップしているかどうかを確認してください。 –

関連する問題