如何为一个按钮设置多个标签?

2022-09-02 00:48:23

我有16个按钮,我标记它们以配对一些设置为按钮的术语并从sqlite数据库导入。所以,我像这样标记它们:

// labelForButton and tagForButton
       class MyStruct {
       public MyStruct (String lab, String t){
        label = lab;
        tag = t;
    }
       private String label;
       private String tag;
       }

mDbHelper.open();

            Cursor c = mDbHelper.getSpojnice(generateWhereClause());

            ArrayList<MyStruct> labelsA = new ArrayList<MyStruct>();
            ArrayList<MyStruct> labelsB = new ArrayList<MyStruct>();

            labelsA.add(new MyStruct(c.getString(2), "1")); // this tag should be the same to button that matches
            labelsB.add(new MyStruct(c.getString(3), "1"));
            labelsA.add(new MyStruct(c.getString(4), "2"));
            labelsB.add(new MyStruct(c.getString(5), "2"));
            labelsA.add(new MyStruct(c.getString(6), "3"));
            labelsB.add(new MyStruct(c.getString(7), "3"));
            labelsA.add(new MyStruct(c.getString(8), "4"));
            labelsB.add(new MyStruct(c.getString(9), "4"));
            labelsA.add(new MyStruct(c.getString(10), "5"));
            labelsB.add(new MyStruct(c.getString(11), "5"));
            labelsA.add(new MyStruct(c.getString(12), "6"));
            labelsB.add(new MyStruct(c.getString(13), "6"));
            labelsA.add(new MyStruct(c.getString(14), "7"));
            labelsB.add(new MyStruct(c.getString(15), "7"));
            labelsA.add(new MyStruct(c.getString(16), "8"));
            labelsB.add(new MyStruct(c.getString(17), "8"));

            Collections.shuffle(labelsA);
            Collections.shuffle(labelsB);

            a1.setText(labelsA.get(0).label);
            a1.setTag(labelsA.get(0).tag);
            a1.setOnClickListener(clickListener);
            b1.setText(labelsB.get(0).label);
            b1.setTag(labelsB.get(0).tag);
            b1.setOnClickListener(clickListener);
            a2.setText(labelsA.get(1).label);
            a2.setTag(labelsA.get(1).tag);
            a2.setOnClickListener(clickListener);
            b2.setText(labelsB.get(1).label);
            b2.setTag(labelsB.get(1).tag);
            b2.setOnClickListener(clickListener);
.
.
.
.
}
}

所以,我需要A1和B1具有相同的标签,还有A2和B2等等。

但是,我还需要一些其他原因,所有A按钮都有标签,例如“A”和所有B的“B”。那么,如何将多个(在我的情况下是两个)标签设置为一个按钮?

编辑:

我把它添加到我的字符串中.xml:

<item type="id" name="KOLONA1"/>
<item type="id" name="KOLONA2"/>

然后添加标签:

a1.setTag(R.id.KOLONA1, labelsA.get(0).tag);
b1.setTag(R.id.KOLONA2, labelsA.get(0).tag);

答案 1

如果您需要将多个标签添加到一个视图中,则必须为文件中的每个标签定义ID,例如:strings.xml

<item type="id" name="section" />
<item type="id" name="hide_show" />

添加密钥后,您可以在java文件中使用这些密钥,如下所示:

rowView.setTag(R.id.section,mSectionList.get(position));
rowView.setTag(R.id.hide_show,"close");

这将设置标记。在获取标记时,您需要对最初设置的对象进行类型转换,如下所示:

String mSection=(String)rowView.getTag(R.id.section);
String isOpen=(String)rowView.getTag(R.id.hide_show);

答案 2

您应该使用 setTag(int 键,对象标签)方法,该方法也采用第二个参数。这将允许您在每个上设置多个,如下所示:keytagsButton

button.setTag(1,object1);
button.setTag(2,object2);

推荐