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

複数ある場合は、commentView の配列を作成できます。

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 に答える