0

次のように、毎回変化する特定の配列サイズに従ってレイアウトを動的に追加しています。

    for(int i = 0; i < topps.size(); i++)
    {
        lr1 = new LinearLayout(Main.this);
        lr1.setOrientation(LinearLayout.VERTICAL);
        scrool.addView(lr1);

        final View child = getLayoutInflater().inflate(R.layout.tops_data, null);
        red   = (TextView)child.findViewById(R.id.topp_detail_red_txt);
        black = (TextView)child.findViewById(R.id.topp_detail_black_txt);

        use = (ImageButton)child.findViewById(R.id.imageButton2);
        use.setOnClickListener(new View.OnClickListener() 
        {   
        @Override
        public void onClick(View v) 
        {
               if(bgh == false)
           {
Toast.makeText(this, "btn1 is "+child.getId(), Toast.LENGTH_SHORT).show();
            use.setBackgroundResource(R.drawable.tick_unsel);
           }
           else if(bgh == true)
           {
Toast.makeText(this, "btn1 is "+child.getId(), Toast.LENGTH_SHORT).show();
                    use.setBackgroundResource(R.drawable.tick_select);
               }
        }
         });
         lr1.addView(child);
         child.setId(main_cnt);
         use.setId(main_cnt);

上記のコードでは、すべてが正常に機能しています。ビューの数は配列サイズごとにリストされており、各ビューのボタンIDを取得しています。

ボタンの画像は状態によって変化しませんが、トーストは正しく印刷されます。例えば ​​:

5つのビューがある場合、3番目のビューのボタンをクリックすると、トーストはsetIdで正しく表示されますが、画像は5番目のビューでのみ変更されます。

各ビューで画像を正しく変更するにはどうすればよいですか?

4

2 に答える 2

1

試してみてください ............

v.setImageResource(R.drawable.tick_select);

また

v.setBackgroundResource(R.drawable.tick_select);

それ以外の

use.setBackgroundResource(R.drawable.tick_select);
于 2012-06-21T10:15:50.490 に答える
0

反復ごとにImageButtonの新しいインスタンスを作成する必要があります。

置換:use =(ImageButton)child.findViewById(R.id.imageButton2);

作成者:ImageButton use =(ImageButton)child.findViewById(R.id.imageButton2);

于 2012-06-21T10:28:47.737 に答える