I have a json function that connects to a database and retrieves comments. The function is first gathers how many comments there are and then a while loop calls the function until all the comments have be retrieved. The problem is when I load my app is goes to a black screen and doesnt load the rest of the views until the Json function has completed. I want the json function to run in the background. So the app will load and the comments will load separately in the background. Here is the code the gathers all the comments,
String usernameforcomments = db.getUserDetails();
registerErrorMsg = (TextView) findViewById(R.id.collectComment_error);
int verify = 1;
int verify2 = 1;
String offsetNumber = "null";
LinearLayout linear = (LinearLayout) this.findViewById(R.id.commentSection);
UserFunctions CollectComments = new UserFunctions();
JSONObject json = CollectComments.collectComments(usernameforcomments, offsetNumber);
int commentCycle = 1;
// check for comments
try {
if (json.getString(KEY_SUCCESS) != null) {
registerErrorMsg.setText("");
String res2 = json.getString(KEY_SUCCESS);
if(Integer.parseInt(res2) == 1){
String numberOfComments = json.getString(KEY_NUMBER_OF_COMMENTS);
String offsetNumberDb = db.getOffsetNumber();
int numberOfComments2 = Integer.parseInt(numberOfComments) - Integer.parseInt(offsetNumberDb);
offsetNumber = offsetNumberDb;
//if comment number is less than 15 or equal to 15
if(numberOfComments2 <= 15){
while (commentCycle <= numberOfComments2){
JSONObject json2 = CollectComments.collectComments(usernameforcomments, offsetNumber);
LinearLayout commentBox = new LinearLayout(this);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.FILL_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT);
commentBox.setBackgroundResource(R.drawable.comment_box_bg);
layoutParams.setMargins(0, 10, 0, 10);
commentBox.setPadding(0,0,0,10);
commentBox.setOrientation(LinearLayout.VERTICAL);
linear.addView(commentBox, layoutParams);
RelativeLayout commentBoxHeader = new RelativeLayout(this);
commentBoxHeader.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));
commentBoxHeader.setBackgroundResource(R.drawable.comment_box_bg);
commentBoxHeader.setBackgroundResource(R.drawable.comment_box_header);
commentBox.addView(commentBoxHeader);
TextView usernameView = new TextView(this);
usernameView.setText("Posted by: " + json2.getString(KEY_USERNAME));
RelativeLayout.LayoutParams usernameViewParam = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
usernameViewParam.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
usernameView.setTextColor(getResources().getColor(R.color.white));
usernameView.setPadding(5, 5, 10, 5);
usernameView.setTypeface(Typeface.DEFAULT_BOLD);
commentBoxHeader.addView(usernameView, usernameViewParam);
TextView commentView = new TextView(this);
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);
TextView descriptionView = new TextView(this);
descriptionView.setText(json2.getString(KEY_COMMENT));
descriptionView.setPadding(20, 10, 20, 20);
descriptionView.setLayoutParams(new LinearLayout.LayoutParams(
LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));
descriptionView.setTextColor(getResources().getColor(R.color.black));
commentBox.addView(descriptionView);
RelativeLayout commentBoxButtons = new RelativeLayout(this);
RelativeLayout.LayoutParams commentBoxButtonsParam = new RelativeLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT);
commentBox.addView(commentBoxButtons, commentBoxButtonsParam);
Button btnTag1 = new Button(this);
RelativeLayout.LayoutParams btnTag1Param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
btnTag1Param.addRule(RelativeLayout.ALIGN_PARENT_LEFT);
btnTag1.setText("Go to " + json2.getString(KEY_PLATENUMBER));
btnTag1Param.setMargins(10, 10, 10, 10);
btnTag1.setBackgroundResource(R.drawable.dashboard_post);
btnTag1.setTextColor(getResources().getColor(R.color.white));
btnTag1.setTypeface(Typeface.DEFAULT_BOLD);
btnTag1.setPadding(8, 5, 8, 5);
btnTag1.setId(verify);
commentBoxButtons.addView(btnTag1, btnTag1Param);
Button btnTag2 = new Button(this);
RelativeLayout.LayoutParams btnTag2Param = new RelativeLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
btnTag2Param.addRule(RelativeLayout.ALIGN_PARENT_RIGHT);
btnTag2.setText("Go to " + json2.getString(KEY_USERNAME));
btnTag2Param.setMargins(10, 10, 10, 10);
btnTag2.setTypeface(Typeface.DEFAULT_BOLD);
btnTag2.setBackgroundResource(R.drawable.dashboard_post);
btnTag2.setTextColor(getResources().getColor(R.color.white));
btnTag2.setPadding(8, 5, 8, 5);
btnTag2.setId(verify2);
commentBoxButtons.addView(btnTag2, btnTag2Param);
verify2 = verify2 + 1;
verify = verify + 1;
offsetNumber = json2.getString(KEY_OFFSET_NUMBER);
commentCycle = commentCycle + 1;
}//end while
}//end if comment number is less than or equal to 15
}//end if key is == 1
else{
// Error in registration
registerErrorMsg.setText(json.getString(KEY_ERROR_MSG));
}//end else
}//end if
} //end try
catch (JSONException e) {
e.printStackTrace();
}//end catch
How can I place this code inside an asynctask so it will run in the background.