ボタン配列のレイアウト内の縦横座標位置はどうやって探しますか?

1971 ワード

元の問題はCSDNクイズチャンネルから来ました.より多くの解決策は下記の通りです.http://ask.csdn.net/questions/1964.
問題の説明:
ボタン配列を作成しました.各ボタンを押すとオンロックメソッドを呼び出します.その方法では、ボタンの位置、例えば行と列の位置をどうやって取得しますか?buttons配列を作成:
LinearLayout layoutVertical = (LinearLayout) findViewById(R.id.liVLayout);

            LinearLayout rowLayout=null;



            LayoutParams param = new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.FILL_PARENT,1);



            //Create Button

            for (i = 0; i<6; i++) 

            {

                rowLayout = new LinearLayout(this);

                rowLayout.setWeightSum(7);

                layoutVertical.addView(rowLayout,param);

                for(j=0;j<7;j++)

                {

                    pBtnDay[i][j]=new Button(this);

                    rowLayout.addView(pBtnDay[i][j],param); 



                    pBtnDay[i][j].setOnClickListener(this); 

                }

            }

            return true;
onClick方法:
Button b = (Button)view;

    txtDate.setText(b.getText());

    boolean bStartDate=false;
現在のonclickの方法では、私が使ってもいいです.  Button b=(Button)view 各ボタンのテキストを取得します.ボタン配列のレイアウト内の縦横座標位置はどうやって探しますか?
ソリューション:Button.setTag()を使って保存してもいいです.  j 和  xの値
class ButtonPosition {

     int x,y;

     public ButtonPosition(int x,int y){

       this.x = x;

       this.y = y;

    }

}

  ......

for(j=0;j<7;j++){

     pBtnDay[i][j]=new Button(this);

     rowLayout.addView(pBtnDay[i][j],param); 

     pBtnDay[i][j].setOnClickListener(this);

     //Save the position

     pBtnDay[i][j].setTag(new ButtonPosition(i,j));

}
onClickメソッドで位置を検索します.
.....

 Button b = (Button)view;

 ButtonPosition p = (ButtonPosition)b.getTag();

 .....