有没有办法检索分配给 TableLayout 对象的变量名称以从另一个对象中识别一个?

问题描述

问题:我很难找到一种方法来确定将两个 TableLayout 对象中的哪一个传递给方法。

我正在尝试做的事情:我正在尝试将 Singleton 类与静态方法列表一起使用,这些静态方法在以编程方式创建和/或编辑 TableLayout 时执行常见的设置功能.

例如,由于在 Button 内为每个 TableRow 创建一个 'add' TableLayout 是相同的,除了按钮 OnClickListener 操作,我想简单地传递表布局对象。然后我使用该对象的 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);
    btnAddRow.setLayoutParams(trLayoutParams);
    btnAddRow.setBackgroundColor(Color.WHITE);
    btnAddRow.setText("+");
    btnAddRow.setTypeface(Typeface.DEFAULT,Typeface.BOLD);
    btnAddRow.setGravity(Gravity.CENTER);
    btnAddRow.setPadding(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 似乎不起作用。 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,false)));
    return btnAddRow;

mTag 变量

mTag

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)