1
我已经很困惑了几天了。ImageButton OnClickListener没有被解雇
几天前,我开始尝试扩展TableLayout视图以使其可折叠。听起来很直截了当。
问题:
protected void onFinishInflate()
{
super.onFinishInflate();
ImageButton ib = (ImageButton) this.findViewById(R.id.collapse);
// totally gayed
ib.setOnClickListener(this.onButtonClick(ib));
}
//works
public OnClickListener onButtonClick(ImageButton ib) {
try {
if (this.collapsed)
{
this.Build();
ib.setImageResource(android.R.drawable.arrow_up_float);
} else {
this.Collapse();
ib.setImageResource(android.R.drawable.arrow_down_float);
}
} catch (Exception e) {
Log.e("MTK", e.toString() + " : " + e.getMessage() + " : " + e.getCause());
}
return null;
}
所以有趣的是,该表将与去除了头中的所有行打开。 onClick方法在视图实例化时触发(好的..?)。
但之后我什么也没有得到,我真的不知道问题是什么。我尝试了很多东西。
解决方案:
public View.OnClickListener onButtonClick(final CollapsibleTableLayout tbl, final ImageButton ib) {
return new View.OnClickListener() {
public void onClick(View v) {
try {
if (tbl.collapsed == true)
{
tbl.Build();
tbl.collapsed = false;
ib.setImageResource(android.R.drawable.arrow_up_float);
} else {
tbl.Collapse();
tbl.collapsed = true;
ib.setImageResource(android.R.drawable.arrow_down_float);
}
} catch (Exception e) {
Log.e("MTK", e.toString() + " : " + e.getMessage() + " : " + e.getCause());
}
}
};
}
原来我不返回单击处理程序。习惯于他们在其他语言中工作有点不同。
我想如果我这样做了,我wouldnt能够修改我正在工作的类,但你只需要通过最终引用到点击处理程序。
希望这可以帮助别人
哦..是的。这就说得通了。但是如果我返回一种方法,那么它会使我离开我正在努力工作的课程。我该如何解决这个问题? –
我做了它的工作。谢谢! –