有没有一种方法可以检索分配给 TableLayout 对象的变量名以相互识别?
Is there a way to retrieve a variable name assigned to a TableLayout object to identify one from another?
问题:我很难找到一种方法来识别将两个 TableLayout 对象中的哪一个对象传递给方法。
我正在尝试做的事情:我正在尝试将 Singleton class 与在创建和/或编辑时执行常见设置功能的静态方法列表一起使用TableLayout
程序化盟友。
例如,由于在 TableRow
中为每个 TableLayout
创建一个 'add' Button
除了按钮 OnClickListener
操作外都是相同的,我会喜欢简单地传递 TableLayout 对象。然后,我使用该对象的 TableLayout 变量名称来识别正确的 OnClickListener 设置。
在下面的代码示例中,if - else
是我想要执行的示例。我知道没有方法 name()
...这是我在代码中演示我想做什么的方式。
private Button setupAuthorsAddRowButton(Context context, TableLayout table){
Button btnAddRow = new Button(context);
TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
trLayoutParams.setMargins(3,3,3,3);
btnAddRow.setLayoutParams(trLayoutParams);
btnAddRow.setBackgroundColor(Color.WHITE);
btnAddRow.setText("+");
btnAddRow.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
btnAddRow.setGravity(Gravity.CENTER);
btnAddRow.setPadding(5,5,5,5);
if(table.name().equals("tableLayoutAuthors")) // name() is not a real method, just an example
btnAddRow.setOnClickListener(v -> table.addView(setupAuthorsTableRow("", "", "", "", false)));
else if(table.name().equals("tableLayoutFiles"))
btnAddRow.setOnClickListener(v -> table.addView(setupFilesTableRow("", "", false)));
return btnAddRow;
}
更新:尝试 setTag()
和 getTag()
来识别两个不同的 TableLayout
s 似乎没有用。 mTag
变量出现 null
。可能我做的不正确,但这是设置:
setTag()
tableLayoutFiles = findViewById(R.id.table_files);
tableLayoutFiles.setTag(R.id.table_files, "tableFiles");
tableLayoutAuthors = findViewById(R.id.table_authors);
tableLayoutAuthors.setTag(R.id.table_authors, "tableAuthors");
getTag()
if(table.getTag()=="tableAuthors")
btnAddRow.setOnClickListener(v -> table.addView(setupAuthorsTableRow(context, table, "", "", "", "", false)));
else if(table.getTag()=="tableFiles")
btnAddRow.setOnClickListener(v -> table.addView(setupFilesTableRow(context, table, "", "", false)));
return btnAddRow;
mTag变量
您可以使用 setTag
方法,该方法允许您将任意对象设置为视图。例如:
logoText.setTag(R.id.table_tag_key, "Table1");
然后使用getTag
检索它。
https://developer.android.com/reference/android/view/View#setTag(int,%20java.lang.Object)
问题:我很难找到一种方法来识别将两个 TableLayout 对象中的哪一个对象传递给方法。
我正在尝试做的事情:我正在尝试将 Singleton class 与在创建和/或编辑时执行常见设置功能的静态方法列表一起使用TableLayout
程序化盟友。
例如,由于在 TableRow
中为每个 TableLayout
创建一个 'add' Button
除了按钮 OnClickListener
操作外都是相同的,我会喜欢简单地传递 TableLayout 对象。然后,我使用该对象的 TableLayout 变量名称来识别正确的 OnClickListener 设置。
在下面的代码示例中,if - else
是我想要执行的示例。我知道没有方法 name()
...这是我在代码中演示我想做什么的方式。
private Button setupAuthorsAddRowButton(Context context, TableLayout table){
Button btnAddRow = new Button(context);
TableRow.LayoutParams trLayoutParams = new TableRow.LayoutParams(0, TableRow.LayoutParams.MATCH_PARENT);
trLayoutParams.setMargins(3,3,3,3);
btnAddRow.setLayoutParams(trLayoutParams);
btnAddRow.setBackgroundColor(Color.WHITE);
btnAddRow.setText("+");
btnAddRow.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
btnAddRow.setGravity(Gravity.CENTER);
btnAddRow.setPadding(5,5,5,5);
if(table.name().equals("tableLayoutAuthors")) // name() is not a real method, just an example
btnAddRow.setOnClickListener(v -> table.addView(setupAuthorsTableRow("", "", "", "", false)));
else if(table.name().equals("tableLayoutFiles"))
btnAddRow.setOnClickListener(v -> table.addView(setupFilesTableRow("", "", false)));
return btnAddRow;
}
更新:尝试 setTag()
和 getTag()
来识别两个不同的 TableLayout
s 似乎没有用。 mTag
变量出现 null
。可能我做的不正确,但这是设置:
setTag()
tableLayoutFiles = findViewById(R.id.table_files);
tableLayoutFiles.setTag(R.id.table_files, "tableFiles");
tableLayoutAuthors = findViewById(R.id.table_authors);
tableLayoutAuthors.setTag(R.id.table_authors, "tableAuthors");
getTag()
if(table.getTag()=="tableAuthors")
btnAddRow.setOnClickListener(v -> table.addView(setupAuthorsTableRow(context, table, "", "", "", "", false)));
else if(table.getTag()=="tableFiles")
btnAddRow.setOnClickListener(v -> table.addView(setupFilesTableRow(context, table, "", "", false)));
return btnAddRow;
mTag变量
您可以使用 setTag
方法,该方法允许您将任意对象设置为视图。例如:
logoText.setTag(R.id.table_tag_key, "Table1");
然后使用getTag
检索它。
https://developer.android.com/reference/android/view/View#setTag(int,%20java.lang.Object)