0

JSON メソッドを使用してコメントを収集する asynctask があります。コメントを listView に配置できるように、baseAdapter を拡張する新しいクラスにコメントを送信したいのですが、どうすればよいですか? これが私の現在のコードです

class loadComments extends AsyncTask<JSONObject, String, JSONObject> {
    private ArrayAdapter<String> mAdapter = null;

    @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) { 
                     l1=(ListView)findViewById(R.id.list);

                     JSONArray commentArray = json2.getJSONArray(KEY_COMMENT);
                     final 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 MySimpleArrayAdapter extends ArrayAdapter<String> {

    private final Context context;

    public MySimpleArrayAdapter(Context context, String[] comments) {
        super(context, R.layout.list_item, values);
        this.context = context;
        this.values = values;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        View rowView = inflater.inflate(R.layout.list_item, parent, false);
        TextView commentView = (TextView) rowView.findViewById(R.id.listComment);
        TextView usernameView = (TextView) rowView.findViewById(R.id.listPostedBy);
        TextView numberView = (TextView) rowView.findViewById(R.id.listNumber);
        commentView.setText(comments[position]);

        return rowView;
    }
} 
4

1 に答える 1

0

アクティビティ クラスで、comments[]、numbers[]、usernames[] をグローバル変数として宣言しようとしましたか? このようにして、両方のクラスからアクセスできます

于 2013-07-11T21:53:36.797 に答える