Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/208.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 多个文本视图的代码集ClickListener_Android - Fatal编程技术网

Android 多个文本视图的代码集ClickListener

Android 多个文本视图的代码集ClickListener,android,Android,我有40多个文本视图,我想在这些视图上添加单击事件,但我尝试“很快”添加: 最终网格布局myGL; myGL=(网格布局)v0725.findViewById(R.id.tab1); 对于(int i=0;i

我有40多个
文本视图
,我想在这些视图上添加
单击事件,但我尝试“很快”添加:

最终网格布局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);
    }
});