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変数に値が格納されていないことが分かりました。なぜなら、反復が行われているにもかかわらず、その理由を見つけることができないからです。
どこが間違っているかについての手掛かりはありますか?
ご覧のとおり、AsyncTaskクラス内でユーザーを再度定義しました。そのヌルではない。私はそれをデバッグしました。 – Hick
私が行っているのは、すべてのデータを表示するだけです。今のところ、それが私がしたいことです。次に、画面に表示するデータの量を制限します。 – Hick
十分に公正...私が言ったように、あなたのロジックは少し難しいです。あなたがそれをデバッグした場合、どこがハングアップしていますか?私たちが見ることのできない、したがって疑わしいコードは 'getFollowingCrumbsUpList()'だけです。アプリケーションが実行されている間、EclipseのDDMSパースペクティブに入り、アプリケーションのスレッドを表示します。 AsyncTaskを見つけて、特にどこかでハングアップしているかどうかを確認してください。 –