3

のwildnoveの回答Spinnerを使用してカスタムを実装しました。すべて正常に動作しますが、選択したボタンの強調表示されたラジオ ボタンを表示できません。Button

以下はコードです。

((Button) findViewById(R.id.btnSpinnerPlanets)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            // How to highlight Radio button of a selected Item???

            final String[] items = view.getResources().getStringArray(R.array.planets__entries);
            ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyFormActivity.this, android.R.layout.simple_spinner_dropdown_item, items);
            new AlertDialog.Builder(MyFormActivity.this).setTitle("the prompt").setAdapter(adapter, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    ((Button) findViewById(R.id.btnSpinnerPlanets)).setText(items[which]);
                    dialog.dismiss();
                }
            }).create().show();
        }
    });     

選択したアイテムのラジオボタンを強調表示する方法を教えてください...

4

2 に答える 2

0

このコードの問題は、がクリックさSpinnerれるたびに を作成していることです。Button次のコードを試してください。

    @Override
        protected Dialog onCreateDialog(int id) {
            Dialog dialog;
            AlertDialog.Builder builder;
            switch(id) {
            case 1:
                Button b=((Button) findViewById(R.id.btnSpinnerPlanets));
                builder = new AlertDialog.Builder(MyFormActivity.this).setTitle("the prompt").setAdapter(get_the_adapter(b), new DialogInterface.OnClickListener() {
                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        b.setText(b.getResources().getStringArray(R.array.planets__entries)[which]);
                        dismissDialog(1);
                    }
                })
                dialog = builder.create();
                break;
            default:
                dialog = null;
            }
            return dialog;

        }
    }

    public ArrayAdapter<String> get_the_Adapter(Button view){
    String[] items = view.getResources().getStringArray(R.array.planets__entries);
                ArrayAdapter<String> adapter = new ArrayAdapter<String>(MyFormActivity.this, android.R.layout.simple_spinner_dropdown_item, items);
                return adapter;
    }

そしてButtonの場合onClick()

((Button) findViewById(R.id.btnSpinnerPlanets)).setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
           showDialog(1);

        }
    });    
于 2013-06-17T14:41:58.933 に答える
0

残念ながら、この動作は Spinner コンポーネントにネイティブに実装されていませんが、いつでも独自の BaseAdapter を作成して、必要な天気がスピナー自体または次のようなドロップダウンに表示されるようにすることができます。

private class ExampleAdapter extends BaseAdapter{

    @Override
    public int getCount() {
        return 0;
    }

    @Override
    public Object getItem(int arg0) {
        return null;
    }

    @Override
    public long getItemId(int position) {
        return 0;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
                    //Here is where you actually get the chance to return whatever you want in the spinner component (the single bar with the arrow)
        return yourCommonView;
    }

    @Override
    public View getDropDownView(int position, View convertView,
            ViewGroup parent) {
              //Here is where you get the chance to return whatever you want in the dropdown menu so here you should validate what's the currently selected element and return an image accordingly...
        return yourSelectedView;
    }

}

ここで重要なメソッドは getDropDownView です。これは、チェックされた CheckBox または使用したい任意のマークを持つ要素を返す機会を与えるものです。もちろん、独自のレイアウトを作成し、現在作成されている要素が必要かどうかを検証する必要があります。マークされるかどうか...

よろしく!

于 2013-06-18T23:06:47.033 に答える