0

我有一个异步任务将数据放入列表视图。它只将最后一个输入放入 listView。我不确定我应该怎么做才能将 3 个字符串放入 listView 项中。我知道我做错了,但这是我当前的代码,

    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++ ) {
                                numberss[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);
                            }



                            setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listComment, comments));
                            setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listNumber, number));
                            setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listPostedBy, usernames));







                            }//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();
4

2 回答 2

0
setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listComment, comments));
                        setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listNumber, number));
                        setListAdapter(new ArrayAdapter<String>(DashboardActivity.this, R.layout.list_item, R.id.listPostedBy, usernames));

是不正确的。

创建ArrayAdapter一次并用于ArrayAdapter.add(T Object)添加数据。您将需要extend ArrayAdapter并覆盖ArrayAdapter.getView(int position, View convertView, ViewGroup parent)以使用自定义项目视图。

编辑:

看看这个如何使用 ArrayAdapter<myClass>

于 2013-07-10T00:52:41.133 回答
0

您必须自定义适配器,并从包含三个 textView 的 xml 文件中扩展视图。检查 android API 示例代码。搜索“extends Adapter”,或者方法public abstract View getView(int position, View convertView, ViewGroup parent),在里面可以设置你的三个字符串。检查 Android 参考http://developer.android.com/reference/android/widget/Adapter.html

于 2013-07-10T00:51:29.220 回答