1

我有一个异步任务,它使用 JSON 方法收集评论、用户名和数字。它们都聚集在阵列中。这发生在 doInBackground() 方法中。在 onPostExecute 内部,数组变成了字符串;它们可以在 BaseAdapter 类中使用。BaseAdapter 类假设采用 Asynctask 创建的字符串并将它们放在 listView 中。但是当我运行代码时,Asynctask 运行但 BaseAdapter 类根本不运行,就好像它甚至不存在一样。我不确定我做错了什么,但我有一些想法。一个想法是我存储评论、用户名和数字的变量没有被传输到 BaseAdapter 类,因此代码只是忽略了所有内容。或者我没有从 Asynctask 内部调用 BaseAdapter 类。我不知道问题是什么。所以,这是我的代码。

    public class DashboardActivity extends ListActivity {

String comments[];
String usernames[];
String Numbers[];

  class loadComments extends AsyncTask<JSONObject, String, JSONObject> {

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


        } 

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

        } 

        protected JSONObject doInBackground(JSONObject... params) {


            JSONObject json2 = CollectComments.collectComments(usernameforcomments, offsetNumber);


                return json2;



        }

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



                        JSONArray commentArray = json2.getJSONArray(KEY_COMMENT);
                        String comments[] = new String[commentArray.length()];
                        for ( int i=0; i<commentArray.length(); i++ ) {
                            comments[i] = commentArray.getString(i);
                        }
                        JSONArray numberArray = json2.getJSONArray(KEY_NUMBER);
                        String numbers[] = new String[numberArray.length()];
                        for ( int i=0; i<numberArray.length(); i++ ) {
                            numbers[i] = numberArray.getString(i);
                        }
                        JSONArray usernameArray = json2.getJSONArray(KEY_USERNAME);
                        String usernames[] = new String[usernameArray.length()];
                        for ( int i=0; i<usernameArray.length(); i++ ) {
                            usernames[i] = usernameArray.getString(i);
                        }











                        }//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    
        }
    }


    new loadComments().execute();



    class CreateCommentLists extends BaseAdapter{
        Context ctx_invitation;
        String[] listComments;
        String[] listNumbers;
        String[] listUsernames;


        public CreateCommentLists(Context ctx_invitation, String[] comments, String[] Numbers, String[] usernames)
        {
            super();
            this.ctx_invitation = ctx_invitation;
            listComments = comments;
            listNumbers = Numbers;
            listUsernames = usernames;
        }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return listComments.length;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return listComments[position];
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            View v = null;
            try
            {
                String inflater = Context.LAYOUT_INFLATER_SERVICE;
                LayoutInflater li = (LayoutInflater)ctx_invitation.getSystemService(inflater);
                v = li.inflate(R.layout.list_item, null);

                TextView commentView = (TextView)v.findViewById(R.id.listComment);
                TextView NumbersView = (TextView)v.findViewById(R.id.listNumber);
                TextView usernamesView = (TextView)v.findViewById(R.id.listPostedBy);


                commentView.setText(listComments[position]);
                NumbersView.setText(listNumbers[position]);
                usernamesView.setText(listUsernames[position]);
            }
            catch(Exception e)
            {
                e.printStackTrace();
            }
            return v;
        }

     }
 }

这不是完整的代码,而是如何布置类的示例。

4

0 回答 0