AsyncTask неправильно загружает данные. - PullRequest
0 голосов
/ 03 февраля 2012
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();

      }
}

Это происходит в бесконечном цикле, когда данные вообще не загружаются, и диалог продолжается в бесконечном цикле, пока я не нажму на него. Моя цель - загрузить некоторый начальный объем данных, а затем извлечь данные в соответствии с пользовательской прокруткой. На данный момент я даже не могу отобразить данные.

После отладки я обнаружил, что в переменной user1 нет сохраненных значений, но я не могу понять, почему, хотя итерация происходит.

Какие-нибудь подсказки относительно того, где я иду не так?

1 Ответ

1 голос
/ 03 февраля 2012

Я действительно не могу понять, что вы пытаетесь сделать , но проблема, скорее всего, заключается в том, что в тот момент, когда вы звоните task.execute(user);, user равно нулю.Таким образом, for (User user:users) в AsyncTask не имеет элементов для повторения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...