Android怎么对控件数组的每一个元素赋值
总的来说我是想对数据库中每一条记录建立一个控件。数据库记录数不定,虽然可以写循环来对数组每个元素赋值,但是如何赋值呢?总不能在xml里写n个控件再findViewById...
总的来说我是想对数据库中每一条记录建立一个控件。数据库记录数不定,虽然可以写循环来对数组每个元素赋值,但是如何赋值呢?总不能在xml里写n个控件再findViewById来调用吧。。(而且这里的n还是不定的)另外想问下,如果数组中所有元素对是用同一个ID的xml里的控件来赋值会有问题吗,好像我试的时候会出现空指针异常
展开
5个回答
展开全部
Android可以遍历每一个控件,使用instanceof判断类型进行相应的赋值。
比如:Button button = new Button(this);
ImageView textView = new ImageView(this);
View[] views = new View[] {button, textView};
for (View itemview : views) {
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
}
if (itemview instanceof Button) {
System.out.println("This is a button");
}
}
但是要注意一下继承关系,比如Button extends TextView。因此Button 也会走TextView的判断方法,因此需要把子类判断放在前面,得到合适的即continue;
for (View itemview : views) {
if (itemview instanceof Button) {
System.out.println("This is a button");
continue
}
if (itemview instanceof TextView) {
System.out.println("This is a TextView");
continue;
}
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
continue;
}
}
比如:Button button = new Button(this);
ImageView textView = new ImageView(this);
View[] views = new View[] {button, textView};
for (View itemview : views) {
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
}
if (itemview instanceof Button) {
System.out.println("This is a button");
}
}
但是要注意一下继承关系,比如Button extends TextView。因此Button 也会走TextView的判断方法,因此需要把子类判断放在前面,得到合适的即continue;
for (View itemview : views) {
if (itemview instanceof Button) {
System.out.println("This is a button");
continue
}
if (itemview instanceof TextView) {
System.out.println("This is a TextView");
continue;
}
if (itemview instanceof TextView) {
System.out.println("This is a imageView");
continue;
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你就是想要根据数据库的数据,动态的添加控件,并且设置控件的样式呀。
1 添加控件的方法,miws_ 已经回答你了。
2 动态的设置控件的样式,你可以设置控件的 layoutParam。
Button button = new Button(this);
button.setText(i+"按钮");
// 可以在这里设置控件样式
view.addView(button);
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你可以在当前界面上添加你想要的任何控件。
LinearLayout view = (LinearLayout) LinearLayout.inflate(this,R.layout.activity_main, null);
setContentView(view);
for (int i = 0; i < 10; i++) {
Button button = new Button(this);
button.setText(i+"按钮");
view.addView(button);
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看c++ primer:
多维数组也可以被初始化
int ia[ 4 ][ 3 ] = {
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 },
{ 9, 10, 11 }
}
用来表示行的花括号即被内嵌在里边的花括号是可选的下面的初始化与前面的是等
价的只是有点不清楚
int ia[4][3] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
下面的定义只初始化了每行的第一个元素其余的元素被初始化为0
int ia[ 4 ][ 3 ] = { {0}, {3}, {6}, {9} };
如果省略了花括号结果会完全不同下面的定义
int ia[ 4 ][ 3 ] = { 0, 3, 6, 9 };
初始化了第一行的3 个元素和第二行的第一个元素其余元素都被初始化为0 为了索
引到一个多维数组中每一维都需要一个方括号。
多维数组也可以被初始化
int ia[ 4 ][ 3 ] = {
{ 0, 1, 2 },
{ 3, 4, 5 },
{ 6, 7, 8 },
{ 9, 10, 11 }
}
用来表示行的花括号即被内嵌在里边的花括号是可选的下面的初始化与前面的是等
价的只是有点不清楚
int ia[4][3] = { 0,1,2,3,4,5,6,7,8,9,10,11 };
下面的定义只初始化了每行的第一个元素其余的元素被初始化为0
int ia[ 4 ][ 3 ] = { {0}, {3}, {6}, {9} };
如果省略了花括号结果会完全不同下面的定义
int ia[ 4 ][ 3 ] = { 0, 3, 6, 9 };
初始化了第一行的3 个元素和第二行的第一个元素其余元素都被初始化为0 为了索
引到一个多维数组中每一维都需要一个方括号。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这种可以用adapterview来做啊,自定义一个list列表控件,然后绑定适配器,要是数据库的话,
可以用SimpleCursorAdapter,非常方便。查一下,资料很多。
可以用SimpleCursorAdapter,非常方便。查一下,资料很多。
追问
SimpleCursorAdapter好像不太适用,那里面listview的每一条样式好像是一样的吧,我要根据数据来制定不同的样式。我本来是打算用SimpleAdapter来弄的,用循环对每个组件设置不同的样式,但是不知道每个组件怎么赋值
追答
自定义,adapter继承baseadapter,在getView方法里,确定显示的数据。就是给自己的list item里自定义的不同控件绑定数据,
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询