2013-04-09 4 views
13

나는 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); 

답변

8

또한 두 번째 매개 변수를 취하는 setTag(int key, Object tag) 방법을 사용해야합니다 key.

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

을 네,하지만 대중과 같이있을 때 내 코드에 그것을 구현하는 방법 MyStruct (String lab, String t) 그리고 나중에 어떻게 사용하는지 확인할 수 있습니까? – marjanbaz

+0

죄송하지만 힌트와 제안 만 드릴 수 있습니다.이 기능을 구현할 수 없습니다. –

+0

내 첫 번째 게시물에 몇 가지 코드를 추가했습니다. 적어도 확인해도 될까요? – marjanbaz

4

시도 : 이것은 당신이이 같은 각 Button에서 여러 tags을 설정 할 수 있습니다

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); 

를 사용하지만, 이것은 단지 돌아갑니다 사물. 그것을 형변환해야합니다. 키가 아래처럼 자바 파일에서이 키를 사용하여 추가 한 후

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

: 당신이 하나 개의보기에 여러 태그를 추가해야하는 경우

+1

잘못된 예외가 발생하는 경우 –

+0

예외가 발생하는 경우 설정 또는 가져 오기 –

+0

키는 응용 프로그램 관련 리소스 ID 여야합니다. 보기에는 하나의 태그 만있을 수 있습니다! –

19

다음과 같은 strings.xml 파일에 모든 태그의 ID를 정의해야 :

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

이렇게하면 하루가 절약됩니다. –

+1

이 작업 .... –

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) 
+0

다음과 같이 사용하십시오

관련 문제