Android 多个文本视图的代码集ClickListener
我有40多个Android 多个文本视图的代码集ClickListener,android,Android,我有40多个文本视图,我想在这些视图上添加单击事件,但我尝试“很快”添加: 最终网格布局myGL; myGL=(网格布局)v0725.findViewById(R.id.tab1); 对于(int i=0;i
文本视图
,我想在这些视图上添加单击事件,但我尝试“很快”添加:
最终网格布局myGL;
myGL=(网格布局)v0725.findViewById(R.id.tab1);
对于(int i=0;i
但是Eclipse在Log.v
行阻止了我,因为i
应该是final(但我不能)
有什么提示吗?您需要声明字段final,以便编译器能够保证该值在匿名内部类的生存期内不会更改。因为i被用作循环计数器,所以很肯定值会改变
因此,您需要将i的值复制到标记为final的变量中
for( int i = 0; i < myGL.getChildCount(); i++ ) {
final int j = i;
...
Log.v("edf", getResources().getResourceEntryName(((TextView) myGL.getChildAt(j)).getId()));
}
for(int i=0;i
您的活动必须实现:
public class YourActivity implements View.OnClickListener
并且必须重写mwthod onClick(视图):
和你的循环:
for(int i = 0; i < myGL.getChildCount(); i++) {
if (getResources().getResourceEntryName(((TextView) myGL.getChildAt(i)).getId()).indexOf("v")==0 ) {
myGL.getChildAt(i).setOnClickListener(this);
}
});
for(int i=0;i
如果使用的是GridView
,则应使用适配器
。。。是的,这是正确的方法。忽略我的回答,因为它只处理将变量值传递给匿名内部类的技术性问题。
public void onClick(View view) {
Log.v("edf", getResources().getResourceEntryName(view.getId()));
}
for(int i = 0; i < myGL.getChildCount(); i++) {
if (getResources().getResourceEntryName(((TextView) myGL.getChildAt(i)).getId()).indexOf("v")==0 ) {
myGL.getChildAt(i).setOnClickListener(this);
}
});