Android 将文本视图数组动态添加到线性布局
我试图添加一个TextView数组,我将其定义为一个公共变量,但当我运行应用程序时,一旦进入for循环,它就会强制关闭。代码如下:Android 将文本视图数组动态添加到线性布局,android,layout,textview,Android,Layout,Textview,我试图添加一个TextView数组,我将其定义为一个公共变量,但当我运行应用程序时,一旦进入for循环,它就会强制关闭。代码如下: LinearLayout myLayout = (LinearLayout) findViewById(R.id.my_layout); LayoutParams lp = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
LinearLayout myLayout = (LinearLayout) findViewById(R.id.my_layout);
LayoutParams lp = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
pairs=new TextView[num_match+1];
for(int l=1;l<=num_match;l++)
{
pairs[l].setTextSize(15);
pairs[l].setLayoutParams(lp);
pairs[l].setId(l);
pairs[l].setText(m1[l]+" - "+m2[l]);
myLayout.addView(pairs[l]);
}
LinearLayout myLayout=(LinearLayout)findViewById(R.id.my_布局);
LayoutParams lp=新的LayoutParams(LayoutParams.WRAP_内容,LayoutParams.WRAP_内容);
pairs=新文本视图[num_match+1];
对于(int l=1;l我认为在使用它之前需要初始化pairs[l]
,如下所示:
for(int l=1;l<=num_match;l++)
{
pairs[l] = new TextView();
//...
}
for(int l=1;l为什么要有一个文本视图数组
?您能用列表视图
替换它吗
我认为这是一种更好的方法。请尝试。您需要创建新的TextView以放入TextView数组,并且您正在跳过第一个索引(对[0]
),这将导致以后出现问题:
pairs=new TextView[num_match];
for(int l=0; l<num_match; l++)
{
pairs[l] = new TextView(this);
pairs[l].setTextSize(15);
pairs[l].setLayoutParams(lp);
pairs[l].setId(l);
pairs[l].setText(m1[l + 1]+" - "+m2[l + 1]);
myLayout.addView(pairs[l]);
}
提供一些细节,比如LogCat错误。为什么会被否决?(这不是完美的,但它的基本观察结果是正确的。)当我放置pairs[l]=newtextView(this)时;eclipse在newtextView(this)下面加下划线,错误是:当我放置pairs[l]=newtextView(this)时,构造函数TextView(new View.OnClickListener(){})是未定义的;eclipse在new TextView(this)下面加下划线,错误显示:构造函数TextView(new View.OnClickListener(){})未定义,请在this
之前添加您的类名,例如MyActivity.this
。谢谢,它现在不显示错误。但是我想在我的活动中看到TextView,但是当我设置setContentView时(R.Layout.activity_main)什么也没发生。我给线性布局分配了id,并将其命名为myLayout,也许我应该用它来调用该方法?sry为打扰这么多添加了一个示例,我希望这会对您有所帮助。
public class Example extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
LinearLayout myLayout = (LinearLayout) findViewById(R.id.my_layout);
LayoutParams lp = new LayoutParams( LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
TextView[] pairs=new TextView[4];
for(int l=0; l<4; l++)
{
pairs[l] = new TextView(this);
pairs[l].setTextSize(15);
pairs[l].setLayoutParams(lp);
pairs[l].setId(l);
pairs[l].setText((l + 1) + ": something");
myLayout.addView(pairs[l]);
}
}
}
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/my_layout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" />