2012-05-03 2 views
1

많은 이미지 버튼이 있습니다. 사용자는 그 버튼 중 하나를 누를 수 있고 어떤 버튼이 눌러 졌는지 알 필요가 있습니다. 이 버튼들은 동적으로 표시되므로 나는 얼마나 많은지 알지 못합니다.어떤 ImageButton이 prssed되었는지 확인하는 방법은 무엇입니까?

ImageButton ib = new ImageButton(this); 
    ib.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View v) { 
      Toast.makeText(TravelBite.this, "test", Toast.LENGTH_SHORT).show(); 
     } 
    }); 

하지만 어떻게 내 모든 이미지 버튼에 대해 하나 개의 수신기를 할 수 : 하나 개의 이미지 버튼 나는이 청취자를 작성합니다? 태그에 의해 눌려진 버튼을 인식 할 수 있습니까? like 태그는 sqlite의 ID입니다.

button.setImageDrawable(testPic); 

button이하여 ImageButton이며 testPict는 (이미지)

그릴 수있다하지만이 버튼을 누를 때 그것이 누르면 있음을 표시하지 않습니다 :

또한이 코드와 버튼에 이미지를 넣어 나는이 작업을 수행하는 경우 :

button.setBackgroundColor(R.color.transparent_background); 

나는 난 그냥 눌러 내가 누를 것을 인식 할 수 Buuton 이미지를보고 싶어하기 때문에이 작업을 수행했다.

감사합니다.

답변

0

할 수 있습니다 use View.setT을 설정 그 이유는, 그래서 아이디의 나를, 문제 고유하지 않은 및 발생 ag (객체) 및 View.getTag()를 호출하고 sqlite id에 저장합니다. 루프

View.OnClickListener listener = View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       Toast.makeText(TravelBite.this, (String)v.getTag(), Toast.LENGTH_SHORT).show(); 
       //or some function that do somthing useful 
       //if(((String)v.getTag).equals("image1")){} or anything else 
      } 

그리고에서 : : 이런 식으로 뭔가가

String tagFromSqlite = "image1"; 
ImageButton ib = new ImageButton(this); 
ImageButton.setTag(tagFromSqlite); 
ib.setOnClickListener(listener); 
0
final OnClickLisener listener = new OnClickListener() { 
    public void onClick(View v){ 
     switch((Integer)v.getTag()){ 
     case R.id.zero: 
      break; 
     case R.id.one: 
      break; 
     case R.id.two: 
      break; 
     } 
    } 
} 

//when init the Buttom 
ImageButton btn = new ImageButton(Context); 
btn.setTag(NUMBER); 
+0

이 내가 dinamically을 만들 필요가 XML에서 버튼을하지 않는 작동하지 않습니다. 이 int id = v.getId(); listiner에서 나를 돌려 쓴다 – Streetboy

+0

이것은 btn.setid (NUMBER); 어쩌면 당신은 이것을이 목적을 위해 사용할 수 있는지 알고 있습니까? – Streetboy

1
ok what you can do is that you can write a single callback function and then set it to each and every button it will allow you to handle each button with a sing function like : 

    View.OnClickListener btn_listener = View.OnClickListener() { 
        @Override 
        public void onClick(View v) { 
         // Do whatever work you want. 
         int id = v.getid(); 
         // check for id and do you task. 
        } 

Arraylist<Button> btn_group = new Arraylist<Button>; 
or 
Arraylist<int> btn_id_group = new ArrayList<int>; 

    for (int i =0; i < 10; i++) { 
     Button btn = new Button(getApplicationContext()); 
     btn.setId(i); 
     btn_id_group.add(i) or btn_group.add(btn); 
     btn.SetOnClickListener(btn_listener); 
    } 

I think it will work for you. 
+0

그러나 어떤 버튼을 눌렀는지 확인하는 방법은 무엇입니까? 내 단추는 내가 sqlite에서 선택해야하는 것을 알 수있는 ID를 유지해야합니다. – Streetboy

0

사용자가 수동으로 분리 유지하기 위해 ID를의를 할당해야합니다 - 나는 비슷한해야 할 일을했을보기 V 있지만

(1000 나뿐만 아니라에 추가하기로 결정했습니다 기본 ID이었다) 청취자가 누른 버튼을 의미에서 프로그래밍 버튼을 만들 때 특별히

View.OnClickListener btn_listener = View.OnClickListener() 
{ 
     @Override 
     public void onClick(View v) 
     { 
      //you can use v.getID() here 
     } 
} 

for (int i =0; i < 10; i++) 
{ 
    Button btn = new Button(getApplicationContext()); 
    btn.setID(1000 + i); 
    btn.SetOnClickListener(btn_listener); 
} 
관련 문제