我有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”。那么,如何将多个(在我的情况下为两个)标签设置为一个按钮?
编辑:
我将此添加到我的string.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);
答案 0 :(得分:20)
如果您需要在一个视图中添加多个标记,则必须为strings.xml
文件中的每个标记定义ID,如:
<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);
答案 1 :(得分:8)
您应该使用setTag(int key, Object tag)
方法,该方法还需要第二个参数key
。这样您就可以在每个tags
上设置多个Button
,如下所示:
button.setTag(1,object1);
button.setTag(2,object2);
答案 2 :(得分:6)
尝试:
button.setTag(R.id.resource_id1,obj1);
button.setTag(R.id.resource_id2,obj2);
button.setTag(R.id.resource_id3,obj3);
要获取标签,请使用
v.getTag(R.id.resource_id1);
v.getTag(R.id.resource_id2);
v.getTag(R.id.resource_id3);
但是,这将只返回对象。你需要对它进行类型转换。
答案 3 :(得分:1)
在strings.xml
中定义密钥ID,然后通过id获取它
例如:
在String.xml中声明以下代码
<item type="id" name="date" />
<item type="id" name="name" />
现在设置标签如下
share.setTag(R.id.date,it.adjournDate);
share.setTag(R.id.name,it.partyName);
分享是我的按钮名称
现在终于在按钮中找到你想要这些值监听器的标签:
v.getTag(R.id.name)
v.getTag(R.id.date)