Android 设置一些文本视图';s文本
在我的项目中,我有80个文本视图。 我应该设置他们的文本从1到80一旦项目运行,他们不需要在未来改变。Android 设置一些文本视图';s文本,android,eclipse,textview,Android,Eclipse,Textview,在我的项目中,我有80个文本视图。 我应该设置他们的文本从1到80一旦项目运行,他们不需要在未来改变。 除了TxtViews,我的布局中还有一些其他的东西,文本视图在ImagesView下。实际上,我有80个图像视图,下面是80个文本视图。我想动态地将TextView的文本设置为1到80。 我知道我可以在layout.xml中完成, 但这真的很耗时。 有没有办法通过代码来做到这一点? 例如,对于for循环或类似的东西?如果它们共享相同的布局(文本除外),并且可以显示为列表,则可以使用ArrayA
除了TxtViews,我的布局中还有一些其他的东西,文本视图在ImagesView下。实际上,我有80个图像视图,下面是80个文本视图。我想动态地将TextView的文本设置为1到80。 我知道我可以在layout.xml中完成, 但这真的很耗时。 有没有办法通过代码来做到这一点?
例如,对于for循环或类似的东西?如果它们共享相同的布局(文本除外),并且可以显示为列表,则可以使用ArrayAdapter并从代码传递值
如果您的
文本视图是在xml上声明的,请将它们包装到另一个视图中,以便以后可以在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 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));
}
LinearLayout ll=(LinearLayout)findViewById(R.id.linear);
对于(int i=1;i在布局中创建适合您需要的视图组,例如:
<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);
}
LinearLayout布局=(LinearLayout)findViewById(R.id.linear\u布局);
对于(int i=0;i<80;i++){
TextView TextView=newtextView(getContext());
textView.setText(“text”+i);
layout.addView(textView);
}
或者,您可以添加标记或任何东西来再次定位它们。或者,只需在布局子视图上迭代即可。如果您知道80 Textview已修复,那么您应该使用listview
Listview好处
- 自动内存管理
- Listview管理索引
检查以下示例
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);
}
}
公共类MainActivity扩展活动{
线性布局线性布局;
滚动视图滚动视图;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
scrollView=(HorizontalScrollView)findViewById(R.id.scrollViewActivityMain);
}
私有void populateTextViews(){
linearLayout=新的linearLayout(本);
linearLayout.setOrientation(linearLayout.HORIZONTAL);
//在此处添加所有文本视图
对于(int i=0;i<80;i++){
TextView myTextView=新的TextView(此);
设置文本(“我的文本视图”+i);
myTextView.setGravity(Gravity.CENTER);
linearLayout.addView(myTextView);
}
scrollView.addView(线性布局);
}
}
别忘了将滚动视图放在xml中。
让我知道它是否适用于您…您可以使用for loop?或以您的方式发布代码到您的TextView
s有id?如果有,您可以这样做。但请记住,这需要调用findViewById(id)
多次,此操作非常耗时。请重新考虑在XML中静态设置值。您应该编写一个单独的简单程序来生成layout.XML文件您的所有TextView都在一个父布局中吗?创建您自己的自定义TextView。除TXTview外,我的代码中还有一些其他内容,因此我无法使用这些内容我认为。好吧,这是一个更易于维护的解决方案,你有什么限制?文本视图在ImagesView下。实际上我有80个ImagesView,它们下面是80个文本视图。我想动态地将文本视图的文本从1设置为80。亲爱的Tragalunas,我不想写1到80的数字。这样,我应该做同样的事情。你可以lso从循环中写入数组:string[]testArray=newstring[80];for(int i=1;ipublic 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);
}
}