21

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」などのタグが必要です。では、1 つのボタンに複数 (私の場合は 2 つ) のタグを設定するにはどうすればよいでしょうか?

編集:

これを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);
4

4 に答える 4

27

複数のタグを 1 つのビューに追加する必要がある場合は、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);
于 2015-10-20T12:50:30.897 に答える
8

メソッドを使用する必要があります。このsetTag(int key, Object tag)メソッドも 2 番目のパラメーターを受け取りますkey。これにより、次のようtagsにそれぞれに複数を設定できます。Button

button.setTag(1,object1);
button.setTag(2,object2);
于 2013-04-09T20:24:27.973 に答える
1

でキー ID を定義しstrings.xml、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)
于 2016-05-27T06:19:28.053 に答える