每次通过循环时更改TextView的名称或变量 - Android

时间:2013-07-07 03:41:27

标签: android loops android-asynctask textview

每次进行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));
            }
        }

这与我的代码是一样的,我试图在没有将所有随机代码放入其中的情况下得到这个想法。

2 个答案:

答案 0 :(得分: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文本到多个textViews,请执行以下操作:

   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));

    }
  }

答案 1 :(得分:1)

如果你有多个commentView,你可以创建一个commentViews数组。

您可以在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));

        }


    }
}