java - for循环中的public void方法;无法接收循环变量

标签 java android loops void

这是我的for循环。 问题:我需要在按钮数组上获取监听器,并根据数组编号获取按钮,将一些文本附加到具有相同编号的 textview 数组。

问题是,我无法将 int i 获取到 public void 方法。如果我将其声明为我的主类,那么应用程序就会失败。当我将 i 值更改为某个实数时,它就起作用了。所以我发现问题是 - onClick 方法接收的是 null 而不是 i

 for(int i=0; i<n;i++){
     btninput.get(i).setOnClickListener(new OnClickListener() {

         @Override
         public void onClick(View v) {
             converswindow.get(i).append(Html.fromHtml("<b>Вы:</b> "+msginput.get(i).getText()+"<br />"));
             msginput.get(i).setText("");
         }
     });
 }

最佳答案

我不确定这是否有效,但请尝试:

for(int i=0; i<n; i++) {
    final int j = i;
    btninput.get(i).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            converswindow.get(j).append(Html.fromHtml("<b>Вы:</b> "+msginput.get(i).getText()+"<br />"));
            msginput.get(j).setText("");
        }
    });
}

如果这不起作用,您可以使用 Android 的 View 标记机制向按钮添加数据。阅读有关 View.setTag(...)View.getTag(...) 的更多信息。

关于java - for循环中的public void方法;无法接收循环变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6162078/

相关文章:

java - 从Azure blob存储下载所有文件,将其压缩并在JAVA中上传zip文件

java - 如何让 Android 中的按钮在屏幕上自动拉伸(stretch)/收缩?

android - 如何创建类似于 instagram 的浏览选项卡的选项卡 View (类别)

android - Gradle警告我的build.gradle文件中不存在的配置

python - 为什么kivy无法导入kivy_clock?

java - java中线程的顺序执行

java - Spring 休息 : upload file

r - 使用R中的循环创建功能列表

c - Arduino程序中LED无法闪烁3次

java - 为什么我的 for 循环在值 200 处停止?