1

每次通过 while 循环时,如何更改 textView 的名称?一个例子是这样

    while( i < 10){

    textView[i].setText("example");
    i++;
    }

我已经尝试过了,它说我不能将数组放到 textView 上,那么我该如何完成呢?另一个问题是 textView 在 asynctask 类中。所以我不能在类中创建一个新的 textView 它必须在类之外创建,所以它是这样的,

     TextView commentView = new TextView;
     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) {
                            for(int i = 0; i < 5; i++)
                                 commentView[i].setText(json2.getArray(i));
            }
        }

这基本上就是我的代码,我试图在没有将所有随机代码放入其中的情况下理解这个想法。

4

2 回答 2

2

基本上,commentView是类型的TextView,它不是类型的Array,你必须初始化TextView如下:

 TextView commentView = new TextView(this);

onPostExecute()分配一个随机值,如下所示:

   protected void onPostExecute(JSONObject json2){
    for(int i=0; i<5; i++)
    {
        commentView.setText(json2.getArray(i));
     }
    }

或者,如果您希望将随机 JSON 文本发送到多个 textView,请执行以下操作:

   TextView[] commentView = new TextView[TextViewCount];
   @Override
protected void onPreExecute() {
    super.onPreExecute();
    for(int i = 0; i < textViewCount; i++) {
        commentView[i] = new TextView(this);
    }
 } 
   @Override
protected void onPostExecute(JSONObject json2) {

    for(int i = 0; i < 5; i++) {
        commentView[i].setText(json2.getArray(i));

    }
  }
于 2013-07-07T03:49:08.630 回答
1

如果您有多个评论视图,您可以制作一组评论视图。

您可以在 AsyncTask 之外定义数组,但如果在 XML 中定义了它们,则可以在其中初始化它们或分配它们。

    TextView[] commentView = new TextView[textViewCount];

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


    @Override
    protected void onPreExecute() {
        super.onPreExecute();
        for(int i = 0; i < textViewCount; i++) {
            commentView[i] = new TextView(this);
        }
    } 

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

    } 

    protected JSONObject doInBackground(JSONObject... params) {
    //do your work here

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

        return json2;



    }

    @Override
    protected void onPostExecute(JSONObject json2) {

        for(int i = 0; i < 5; i++) {
            commentView[i].setText(json2.getArray(i));

        }


    }
}
于 2013-07-07T03:54:55.143 回答