关于android自定义控件动态添加的初始化问题

jiokoi1989 2011-11-10 10:05:10
我是使用的先layout布局,然后新建一个该控件类来实现自定义控件的。这个控件的名字是ChooseItem。
这个自定义控件的构造函数是:

public ChooseItem(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
LayoutInflater.from(context).inflate(R.layout.chooseitem, this, true);

titleView = (TextView)findViewById(R.id.ctitletv);
numView = (TextView)findViewById(R.id.cnumtv);
timeView = (TextView)findViewById(R.id.ctimetv);
//teEditText = (EditText)findViewById(R.id.te);
}


现在我需要在一个activity里面的一个LinearLayout布局中动态增加这个自定义控件。现在有一个问题是,使用LinearLayout.addview(ChooseItem)的时候,都提示我要初始化。可我不知道ChooseItem ctemp = new ChooseItem(?)这里的初始化参数该怎么写。或者还有别的初始化方法?

我是android新手,恳请各位大牛帮忙~感激不尽~
...全文
700 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiokoi1989 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lingang1359 的回复:]

引用 5 楼 jiokoi1989 的回复:
引用 4 楼 haoyizsw 的回复:

加一个构造函数public ChooseItem(Context context){
super(context);
}

我控件类里面两个构造函数都继承了,你写的那个我也有写。
如果只是context还好,但我定义的那个控件必须是在(Context context, AttributeSe……
[/Quote]
我傻了,没有初始化listLinearLayout,现在运行没问题了!
太感谢你了!!!
lingang1359 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 7 楼 jiokoi1989 的回复:]
引用 6 楼 lingang1359 的回复:

引用 5 楼 jiokoi1989 的回复:
引用 4 楼 haoyizsw 的回复:

加一个构造函数public ChooseItem(Context context){
super(context);
}

我控件类里面两个构造函数都继承了,你写的那个我也有写。
如果只是context还好,但我定义的那个控件必须是在(Co……
[/Quote]

ChooseItem ctemp = new ChooseItem(this,null);
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT,LayoutParams.WRAP_CONTENT);
ctemp.setLayoutParams(params);
listLinearLayout.addView(ctemp);
jiokoi1989 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lingang1359 的回复:]

引用 5 楼 jiokoi1989 的回复:
引用 4 楼 haoyizsw 的回复:

加一个构造函数public ChooseItem(Context context){
super(context);
}

我控件类里面两个构造函数都继承了,你写的那个我也有写。
如果只是context还好,但我定义的那个控件必须是在(Context context, AttributeSe……
[/Quote]

不可以诶,编译没问题,一在模拟器里面就报错了。我用的是
ChooseItem ctemp = new ChooseItem(this,null);
listLinearLayout.addView(ctemp);
但一运行就错了。
lingang1359 2011-11-12
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 jiokoi1989 的回复:]
引用 4 楼 haoyizsw 的回复:

加一个构造函数public ChooseItem(Context context){
super(context);
}

我控件类里面两个构造函数都继承了,你写的那个我也有写。
如果只是context还好,但我定义的那个控件必须是在(Context context, AttributeSet attrs)参数下的构造函数里面实现,也就是说……
[/Quote]

请直接传null就可以了
jiokoi1989 2011-11-11
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 haoyizsw 的回复:]

加一个构造函数public ChooseItem(Context context){
super(context);
}
[/Quote]
我控件类里面两个构造函数都继承了,你写的那个我也有写。
如果只是context还好,但我定义的那个控件必须是在(Context context, AttributeSet attrs)参数下的构造函数里面实现,也就是说我要是new一个ChooseItem,我也要new ChooseItem( Context, AttributeSet)。现在我就是不知道到底传什么样的实参,特别是AttributeSet。
haoyizsw 2011-11-11
  • 打赏
  • 举报
回复
加一个构造函数public ChooseItem(Context context){
super(context);
}
haoyizsw 2011-11-11
  • 打赏
  • 举报
回复
是个View 就都用Context
jiokoi1989 2011-11-11
  • 打赏
  • 举报
回复
再顶!
jiokoi1989 2011-11-10
  • 打赏
  • 举报
回复
自己顶一下,求教啊~~!!

80,352

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧