0

このようにアクティビティクラスにアルファベットボタンを配置したい...

ここに画像の説明を入力

私のコードは次のとおりです。

private void populateButtons() {
        RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout01);
        for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++) {
            String buttonText = String.valueOf(buttonChar);
            Button alphabetButton = new Button(this);
            alphabetButton.setText(buttonText);
            layout.addView(alphabetButton);
        }
        
    }

これは次のようになります。

ここに画像の説明を入力

次のようにすべてのアルファベット ボタンを手動で配置できますが、Activity クラスでコーディングする方がよいと思います。

    <Button
        android:id="@+id/button1"
        android:layout_width="30dp"
        android:layout_height="30dp"
        android:layout_alignParentLeft="true"
        android:layout_alignParentTop="true"
        android:background="@color/violet"
        android:text="A"
        android:textColor="@color/main"
        android:textSize="20dp"
        android:onClick="methodHere" />

では、Activity クラスの Java コードを使用して上記の xml コードを変換するにはどうすればよいですか。

助けてください。

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

4

3 に答える 3

1

IDを忘れてしまいました。ここで説明するように、ボタンのIDを設定します。

JavaコードでのRelativeLayoutの設定

これにより、次のようなコードが作成されます。

private void populateButtons(){

  RelativeLayout layout = (RelativeLayout) findViewById(R.id.RelativeLayout01); 

  for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++){

        String buttonText = String.valueOf(buttonChar);
        Button alphabetButton = new Button(this);
        alphabetButton.setId('A');// This is just an unique integer.
        alphabetButton.setText(buttonText);
        layout.addView(alphabetButton);
    }

}        
于 2013-01-02T06:54:29.613 に答える
1

これを試すことができます。

private void populateButtons() {

        ArrayAdapter<String> chars = new ArrayAdapter<String>(context, android.R.layout.simple_list_item_1);

        GridView layout = (GridView) findViewById(R.id.gridView);
        for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++) {
            String buttonText = String.valueOf(buttonChar);
            chars.add(buttonText);
        }
        layout.setAdapter(chars);
    }

本当にボタンを挿入したい場合はAdapter、を拡張するクラスを作成します。

ArrayAdapterで十分です。

public class AlphabetButtonAdapter extends ArrayAdapter<String>
{

        private List<String> objects;
        public AlphabetButtonAdapter(Context context,
                int textViewResourceId,
                List<String> objects)
        {
            super(context, textViewResourceId, objects);
            this.objects = objects;

        }


        @Override
        public View getView(int position, View convertView, ViewGroup parent)
        {
            Button b = new Button(getContext());
            b.setText(objects.get(position));
            return b;
        }

        public void setOnClickListener(OnClickListener listener)
        {
             this.listener = listener;
        }

}

カスタマイズされたアダプターを使用したデータの取り込み

private void populateButtons() {


            ArrayList<String> list = new ArrayList<String>();            
            GridView layout = (GridView) findViewById(R.id.gridView);
            for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++) {
                String buttonText = String.valueOf(buttonChar);
                list.add(buttonText);
            }

            AlphabetButtonAdapter chars = new AlphabetButtonAdapter(context, 0, list);
            layout.setAdapter(chars);

        }

更新 1:onClick()ボタンのバインド

セッターメソッドを追加するだけOnClickListenerで渡すことができますAlphabetButtonAdapter

public class MyActivity OnClickListener
{

    @Override
    public void onClick(View v)
    {
             Button b = (Button) v;
             // Your definition...

    }
}

private void populateButtons() {


                ArrayList<String> list = new ArrayList<String>();            
                GridView layout = (GridView) findViewById(R.id.gridView);
                for (char buttonChar = 'A'; buttonChar <= 'Z'; buttonChar++) {
                    String buttonText = String.valueOf(buttonChar);
                    list.add(buttonText);
                }

                AlphabetButtonAdapter chars = new AlphabetButtonAdapter(context, 0, list);
                chars.setOnClickListener(listener);
                layout.setAdapter(chars);

}
于 2013-01-02T06:48:53.253 に答える