2015-03-02 26 views
-1

我想编辑循环内的TextViews。 TextViews可以在循环外定义,但它们必须在循环内编辑。我试图把我的代码放在while循环中,但是当我运行它时,应用程序崩溃了。 这里是我的代码:在循环中编辑TextViews

package com.example.ani.mapactivity; 

import android.graphics.Color; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import java.util.Random; 


public class LotA extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lot); 
    LinearLayout toplayout = (LinearLayout) findViewById(R.id.toplayout); 
    Random findnum = new Random(); 
    int i = findnum.nextInt(1-0) + 0; 
    LinearLayout layout = (LinearLayout) toplayout.getChildAt(i); 
    Random spotinit = new Random(); 
    int a = spotinit.nextInt(9-0) + 0; 
    TextView spot = (TextView) layout.getChildAt(a); 
    spot.setBackgroundColor(Color.RED); 
} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_lot, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

这里是我的XML代码:

<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:id="@+id/layout1" 
    android:orientation="vertical"> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot1" 
     android:layout_marginTop="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot2" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot3" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot4" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot5" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:id="@+id/layout2" 
    android:orientation="vertical"> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot6" 
     android:layout_marginTop="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot7" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot8" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot9" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot10" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
</LinearLayout> 
<LinearLayout 
    android:layout_width="wrap_content" 
    android:layout_height="fill_parent" 
    android:id="@+id/layout3" 
    android:orientation="vertical"> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot11" 
     android:layout_marginTop="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot12" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot13" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot14" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
    <TextView 
     android:layout_width="90dp" 
     android:layout_height="90dp" 
     android:id = "@+id/spot15" 
     android:layout_marginTop="10dp" 
     android:layout_marginRight="10dp" 
     android:background="#ffffff"/> 
</LinearLayout> 

下面是我一直在试图把它放在一个while循环。我宁愿一个while循环(因为我最适合这个),但for循环也很好。

package com.example.ani.mapactivity; 

import android.graphics.Color; 
import android.support.v7.app.ActionBarActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.widget.LinearLayout; 
import android.widget.TextView; 

import java.util.Random; 


public class LotA extends ActionBarActivity { 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_lot); 
    LinearLayout toplayout = (LinearLayout) findViewById(R.id.toplayout); 
    int loopnum = 1; 
    while(loopnum <= 3){ 
     Random findnum = new Random(); 
     int i = findnum.nextInt(1-0) + 0; 
     LinearLayout layout = (LinearLayout) toplayout.getChildAt(i); 
     Random spotinit = new Random(); 
     int a = spotinit.nextInt(9-0) + 0; 
     TextView spot = (TextView) layout.getChildAt(a); 
     spot.setBackgroundColor(Color.RED); 
     loopnum += 1; 
    } 

} 


@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.menu_lot, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    // Handle action bar item clicks here. The action bar will 
    // automatically handle clicks on the Home/Up button, so long 
    // as you specify a parent activity in AndroidManifest.xml. 
    int id = item.getItemId(); 

    //noinspection SimplifiableIfStatement 
    if (id == R.id.action_settings) { 
     return true; 
    } 

    return super.onOptionsItemSelected(item); 
} 

}

如果我的代码需要任何澄清,请在评论回复。我对此很陌生,所以请尽量不要对我的代码做出粗鲁的评论。感谢您的帮助。

问候,

阿尼

+4

请发布logcat输出。 你已经写了'LinearLayout toplayout =(LinearLayout)findViewById(R.id.toplayout);'。但是我没有看到一个带'toplayout'作为'id'的'LinearLayout'。 – Kishore 2015-03-02 07:15:25

+0

首先检查你的布局和它的id,如果textview是在你的布局然后找到它是在xml布局定义。 – 2015-03-02 07:29:58

+0

请从您使用的IDE发布您的LogCat – 2015-03-02 08:06:33

回答

0

考虑你有一个的LinearLayout这与ID topLayout您rootView

您randomNumber限制是错误的,下面的代码both..Refer ..

Random findnum = new Random(); 
int i = findnum.nextInt(2); //Since you have 3 linear layouts 
LinearLayout layout = (LinearLayout) toplayout.getChildAt(i); 
Random spotinit = new Random(); 
int a = spotinit.nextInt(4) ;//Since each linear layout has 5 textViews 
TextView spot = (TextView) layout.getChildAt(a); 
spot.setBackgroundColor(Color.RED); 
loopnum += 1; 
+0

嗨,如果它已帮助,请将其标记为已接受的答案 – 2015-05-27 10:12:19