如何在Asynctask内部循环while - Android

时间:2013-07-05 17:43:39

标签: android json android-asynctask while-loop

我有一个asynctask,它在doInBackground()中使用了一个json函数,它将变量返回给onPostExecute。问题是我希望json函数在while循环中,每次进入循环时它都会收集注释。所以我可以有15条评论,我想将它们全部发送到onPostExecute以放入视图中。这是我的代码

     class loadComments extends AsyncTask<JSONObject, String, List<String>> {
             DatabaseHandler db = new DatabaseHandler(getApplicationContext());





            @Override
            protected void onPreExecute() {
                super.onPreExecute();
            }

            @Override
            protected void onProgressUpdate(String... values) {
                super.onProgressUpdate(values);

            }


            protected List<String> doInBackground(JSONObject... params) {
            //do your work here
                List<String> results = new ArrayList<String>();
             int i = 0;
                while (i < 5 ){
                JSONObject json2 = CollectComments.collectComments(usernameforcomments, offsetNumber);
                result = json2;
                results.add(result);
                i++;
                }


                return results;

            }

            @Override
            protected void onPostExecute(List<String> results) {
                try {  
                    if (json2.getString(KEY_SUCCESS) != null) { 
                        registerErrorMsg.setText("");
                        String res2 = json2.getString(KEY_SUCCESS);
                        if(Integer.parseInt(res2) == 1){ 

                                commentView.setText(json2.getString(KEY_COMMENT));
                                    LinearLayout.LayoutParams commentViewParams = new LinearLayout.LayoutParams(
                                     LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
                                    commentViewParams.setMargins(20, 10, 20, 20);
                                    commentView.setBackgroundResource(R.drawable.comment_bg);
                                     commentView.setTextColor(getResources().getColor(R.color.black)); 
                                    commentBox.addView(commentView, commentViewParams);





                            }//end if key is == 1
                        else{
                            // Error in registration
                            registerErrorMsg.setText(json2.getString(KEY_ERROR_MSG));
                        }//end else
                    }//end if
                } //end try

                catch (JSONException e) { 
                    e.printStackTrace();
                }//end catch    
            }
        }

这段代码不起作用,但它是我想要完成的一个例子

1 个答案:

答案 0 :(得分:0)

你能做的是: 1.编写一个解析json数据并将所有必需变量初始化为全局变量的函数 2.在AsyncTask的doInBackground()方法中运行你的函数而不传递任何参数 3.将值设置为onPostExecute()方法的视图