在我的项目中,我有80个TextView。 一旦项目运行,我应该将它们的文本从1设置为80,并且将来不需要更改它们。 除了TxtViews,我的布局中还有其他一些东西,TextViews在ImagesViews下面。实际上我有80个imagesViews,下面是80个TextViews。我想动态地将textViews的文本从1设置为80。 我知道我可以在layout.xml中执行此操作 但它真的很耗时。 有没有办法通过代码来做到这一点? 例如,有一个for循环或类似的东西?
答案 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。
列表视图收益
答案 2 :(得分:0)
如果它们共享相同的布局(文本除外),并且可以显示为列表,则可以使用ArrayAdapter并传递代码中的值。
答案 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));
}
编辑但是,如果你的价值不会发生变化,你应该使用RecyclerView
或ListView
。
您可以详细了解RecyclerView
here和ListView
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中。 让我知道它是否适合你...