2012-05-03 3 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(); 
     } 
    }); 

しかし、どのようにすべての私のイメージボタンの1人のリスナーを行うには:1つのイメージボタンの 私はこのリスナーを書くでしょうか?どのボタンがタグで押されたのか分かりますか?同様のタグはsqliteからのIDです。

また、私は、このコードをボタンにイメージを置く:

button.setImageDrawable(testPic); 

buttonはのImageButtonあるとtestPictは描画可能(画像)です

をしかし、私は、このボタンを押したときに、それが押されたことを示していません私はこれを行う場合:

button.setBackgroundColor(R.color.transparent_background); 

を私はちょうど私が押すと、私が押されたものを認識することができるBuutonの画像を見たいので、私はこれをしなければなりませんでした。

ありがとうございました。

答えて

0

することはできuse View.setTそれらを設定する理由ですので、IDは、私は、問題固有のものではないと原因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のを割り当てる必要があります - 私は似た何かをしなければならなかった(1000年私も時に追加することにしたベースIDた)

ビューVが、リスナーが押されたボタンを参照して、プログラムでボタンを作成するとき、私は、具体的

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); 
} 
関連する問題