java - 如何使用 for 循环中的接口
问题描述
我有两个inner classes
命名CalculatorClass
和UpdatePayment
类MainActivity
。在UpdatePayment
课堂上有一个 for 循环,我有一个array
of Buttons
. 我想为循环中的每个按钮添加监听器。这些按钮将初始化CalculatorClass
并获取计算值。
演示代码是:
public static class MainActivity{
private interface UpdateEditText{
void onCallback(String s);
}
private class CalculatorClass extends Dialog{
UpdateEditText updateEditText;
public CalculatorInterface(@NonNull Context context, UpdateEditText updateEditText) {
super(context);
this.updateEditText = updateEditText;
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.calculator);
initialize();
}
initialize(){
.......................
s = "Some texts";
updateEditText.onCallback(s);
}
}
private class UpdatePayment extends Dialog{
private Button[] button = new Button[100];
private EditText[] editText = new EditText[100];
public CalculatorInterface(@NonNull Context context) {
super(context);
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.update);
initialize();
}
initialize(){
.......................
for(int i = 0; i < MAXSize; i++){
button[i] = new Button(MainActivity.this);
editText[i] = new EditText(MainActivity.this);
//add buttons to view to layout
button[i].setOnclickListener(new View.OnClickListener(){
public void onClick(View v) {
CalculatorClass calculator = new
CalculatorClass(MainActivity.this,
new UpdateEditText() {
@Override
public void onCallback(String s) {
editText[i - 1].setText(s);
}
});
calculator.show();
}
);
}
}
}
}
问题是我点击的最后一个按钮的线路editText[i].setText(s)
工作editText
,即我点击的任何按钮,它填充editText[MaxSize -1]
我应该怎么办?如何为所有人执行此操作i
?请帮助我,我在互联网上尝试了很多搜索,但我仍然没有得到任何解决方案。
解决方案
匿名类在 java 中被视为静态变量。这是因为初始化活动后的 i 值等于 1 小于编辑文本数组的长度。editText[indicies_of_button_clicke].setText(s)
您将如何获得单击按钮的指示是:将标签设置为此行下方的按钮“editText[i] = new EditText(MainActivity.this);”,如下所示:button[i].setTag(i)
检索在按钮点击侦听器中点击的实际按钮的索引,
v.getTag()// this will give you an integer value which will be the indices of actual button clicked
//use this value to set your edit text value.
推荐阅读
- html - 如何避免 Instagram 嵌入以增加移动设备上容器 div 的宽度?
- laravel - 如何在函数中使用带有 3 个 where 子句的 Laravel?
- android - android:kotlin流多个事件
- python - Python numpy 插值给出错误的输出
- javascript - JavaScript - 使用 string.indexOf() 检查哪个子字符串首先出现在父字符串中
- julia - 古巴的Julia包装器和Windows上的fork?
- python - 如何在 Python 中将 zip 文件转换为 gzip
- marklogic - 管理 API 以在集群环境中的组中的所有节点中创建森林
- node.js - parse-server-example 项目不再工作
- java - 为什么我的 gradle 创建的 jar 文件中没有 .class 文件?