设置一些TextView的文本

时间:2015-09-04 12:32:37

标签: android eclipse textview

在我的项目中,我有80个TextView。 一旦项目运行,我应该将它们的文本从1设置为80,并且将来不需要更改它们。 除了TxtViews,我的布局中还有其他一些东西,TextViews在ImagesViews下面。实际上我有80个imagesViews,下面是80个TextViews。我想动态地将textViews的文本从1设置为80。 我知道我可以在layout.xml中执行此操作 但它真的很耗时。 有没有办法通过代码来做到这一点? 例如,有一个for循环或类似的东西?

5 个答案:

答案 0 :(得分:1)

在布局中创建适合您需要的ViewGroup,例如:

<LinearLayout
    android:id="@+id/linear_layout"
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
/>

然后以编程方式创建TextView实例,并将它们添加到LinearLayout,如下所示:

    LinearLayout layout = (LinearLayout)findViewById(R.id.linear_layout);

    for(int i = 0; i < 80; i++) {
        TextView textView = new TextView(getContext());
        textView.setText("text" + i);
        layout.addView(textView);
    }

或者,您可以添加标签或其他任何内容以再次找到它们。或者只是迭代布局子视图。

答案 1 :(得分:1)

如果你知道固定了80个Textview,那么你应该使用listview。

列表视图收益

  • 自动记忆管理
  • Listview管理索引

答案 2 :(得分:0)

如果它们共享相同的布局(文本除外),并且可以显示为列表,则可以使用ArrayAdapter并传递代码中的值。

http://www.mkyong.com/android/android-listview-example/

答案 3 :(得分:0)

如果在xml上声明了TextView,请将它们包装在另一个视图上,以便稍后在java代码上引用它,然后只需使用for

类似的东西:

View view = findViewById(R.id.your_wrapper);

for(int i=0; i<((ViewGroup)view).getChildCount(); i++) {
    View nChild = ((ViewGroup)view).getChildAt(i);
    TextView tv = (TextView) nChild;
    tv.setText(String.valueOf(i + 1));
}

如果没有,您可以在Java代码中动态创建它们,并将它们附加到LinearLayout之类的布局。

示例:

<强> XML

<LinearLayout
    android:orientation="vertical"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"    
    android:id="@+id/linear"
/>

Java代码

LinearLayout ll = (LinearLayout) findViewById(R.id.linear);

for (int i = 1; i <= 80; i++) {
    TextView tv = new TextView(this); // Assuming you're inside an Activity.
    int count = ll.getChildCount();
    tv.setText(String.valueOf(i));

    ll.addView(tv, count, new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.WRAP_CONTENT));
}

编辑但是,如果你的价值不会发生变化,你应该使用RecyclerViewListView

您可以详细了解RecyclerView hereListView here

第二次修改:根据您对评论的说法,您真的应该使用ListView而不是当前的设计。上述解决方案和其他答案对您的问题根本不起作用。

答案 4 :(得分:0)

查看以下示例,

public class MainActivity extends Activity {

LinearLayout linearLayout ;
ScrollView scrollView;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    scrollView = (HorizontalScrollView) findViewById(R.id.scrollViewActivityMain);
}

private void populateTextViews() {

    linearLayout = new LinearLayout(this);
    linearLayout.setOrientation(LinearLayout.HORIZONTAL);

    //add all textViews here
    for(int i=0; i < 80; i++){
        TextView myTextView = new TextView(this);
        myTextView.setText("My TextView "+i);
        myTextView.setGravity(Gravity.CENTER);
        linearLayout.addView(myTextView);
    }

    scrollView.addView(linearLayout);
}
}

不要忘记将scrollView放在xml中。 让我知道它是否适合你...