每次进行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));
}
}
这与我的代码是一样的,我试图在没有将所有随机代码放入其中的情况下得到这个想法。
答案 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));
}
}
}