Как получить спиннер на андроид без xml - PullRequest
0 голосов
/ 16 февраля 2012

В моем приложении мне нужен спиннер на Button клике с динамически загружаемыми значениями. Моя потребность в файле XML, я не должен использовать управление счетчиком. Я должен показать прядильщик без XML при нажатии кнопки:

Я использую следующий код, но не получил ошибки и счетчика. я знаю, что скучаю по некоторым строкам. Пожалуйста, помогите мне.

мой код:

showSpinner - это элемент управления Button.

MyOnItemSelectedListene находится вне метода onCreate (..) .

import java.util.Calendar;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.LinearLayout;
import android.widget.Spinner;
import android.widget.Toast;

public class DynamicSpinnerActivity extends Activity {
    /** Called when the activity is first created. */
    Button b;
    LinearLayout linearLayout1;
    String years[] = new String[12];
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        b = (Button) findViewById(R.id.button1);
        linearLayout1 = (LinearLayout) findViewById(R.id.linearLayout1);
        b.setOnClickListener(new View.OnClickListener() {
            public void onClick(View v) {
//              Toast.makeText(DynamicSpinnerActivity.this, "sdfsdf", Toast.LENGTH_SHORT).show();
//              Log.e("tag", "msg");
                Spinner spinnner = new Spinner(DynamicSpinnerActivity.this);
                int thisYear = Calendar.getInstance().get(Calendar.YEAR);
                for (int i = 0; i < 12; i++) {
                    years[i] = Integer.toString(thisYear);
                    thisYear = thisYear + 1;
                }
                Log.e("tag", "msg"+years.length);
                ArrayAdapter<String> expYearAdapter = new ArrayAdapter<String>(DynamicSpinnerActivity.this, android.R.layout.simple_spinner_item, years);
                expYearAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
                spinnner.setAdapter(expYearAdapter);
//              linearLayout1.addView(spinnner);
                spinnner.performClick();
                spinnner.setOnItemSelectedListener(new MyOnItemSelectedListener());

            }
        });
    }

    public class MyOnItemSelectedListener implements OnItemSelectedListener {

        public void onItemSelected(AdapterView<?> parent,View view, int pos, long id) {
             Toast.makeText(parent.getContext(), "The planet is " +parent.getItemAtPosition(pos).toString(), Toast.LENGTH_LONG).show();
             Log.e("values", parent.getItemAtPosition(pos).toString());
        }

        public void onNothingSelected(AdapterView parent) {
          // Do nothing.
        }
    }

}

Ответы [ 3 ]

0 голосов
/ 16 февраля 2012

можно показать, используя spinnner.performClick();

но @jitendra sharma 'лучше

0 голосов
/ 16 февраля 2012

Если вы не хотите отображать счетчик, по умолчанию сделайте его невидимым и сделайте его видимым при нажатии кнопки

0 голосов
/ 16 февраля 2012

вы создали спиннер, все в порядке, но вам также нужно добавить этот макет к вашему содержимому на экране, как, например, если у вас есть удерживание блочного удерживающего устройства, добавьте бланк к

llHolder.addView(spinner);
...