android-一般访问TextView

我有一个Android活动,其中有八个TextView,分别名为tvStat1,tvStat2,…,tvStat8.我有一个函数,需要一个整数作为参数.我想做的是这样的:

public void incrementScore(int StatisticCategory){
    String s "R.id.tvStat" + String.ValueOf(StatisticCategory);
    TextView tvGeneric = (TextView)findViewById(s);
    // ... do something with the text in the generic TextView...
}

但是当然,这是行不通的,因为findViewById方法仅采用整数作为参数,因此不喜欢我基于传入参数识别通用TextView的方式.由于我只有八个TextView,因此无需花费太多精力编写switch语句……但是我认为必须有一种更好的方法.有任何想法吗?

解决方法:

您可以使用ViewGroup.getChildCount()ViewGroup.getChildAt().这是一个示例.

假设您有布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >

    <LinearLayout 
        android:id="@+id/text_group"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent">

        <TextView  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"   />

        <TextView  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"   />

        <TextView  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"   />

        <TextView  
            android:layout_width="fill_parent" 
            android:layout_height="wrap_content"   />

     </LinearLayout>
</LinearLayout>

您可以使用下一个代码将文本分配给TextViews:

@Override
public void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    LinearLayout textGroup = (LinearLayout)findViewById(R.id.text_group);

    for(int i = 0; i < textGroup.getChildCount(); i++)
    {
        TextView text = (TextView)textGroup.getChildAt(i);
        text.setText("This is child #"+i);
    }

    }

上一篇:android TextView使用代码设置边距和背景


下一篇:python-开始的Pygtk TextView设置光标