2

5 つのスピナーを含むオプション ページがあります。ユーザーがログインしてアカウント オプションを変更しているとき、スピナーにユーザーの選択をロードさせたいと思います。現時点では、各スピナーはアダプターの「選択してください」の最初の値をロードします。サーバーがチェックされ、ユーザーがまだ選択していない場合は問題ありませんが、明らかな条件に基づいて決定されることを望みます。

これを行う良い方法はありますか?スピナーの選択肢をサーバーに送信し、適切なユーザーと一緒に保存するためのコードを完成させました。したがって、さまざまな PHP クエリが必要であることはわかっていますが、それは問題ありません。しかし、onCreate 内でスピナーの可視値を設定するにはどうすればよいでしょうか?

    ageSpinner = (Spinner) findViewById(R.id.ageSpinner);
    ageAdapter = ArrayAdapter.createFromResource
    (this, R.array.ageArray, android.R.layout.simple_spinner_item);
    ageAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    ageSpinner.setAdapter(ageAdapter);
    ageSpinner.setTag("age");
    ageSpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    eduSpinner = (Spinner) findViewById(R.id.eduSpinner);
    eduAdapter = ArrayAdapter.createFromResource
    (this, R.array.eduArray, android.R.layout.simple_spinner_item);
    eduAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    eduSpinner.setTag("edu");
    eduSpinner.setAdapter(eduAdapter);
    eduSpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    maritalSpinner = (Spinner) findViewById(R.id.maritalSpinner);
    maritalAdapter = ArrayAdapter.createFromResource
    (this, R.array.maritalArray, android.R.layout.simple_spinner_item);
    maritalAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    maritalSpinner.setTag("marital");
    maritalSpinner.setAdapter(maritalAdapter);
    maritalSpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

    nationalitySpinner = (Spinner) findViewById(R.id.nationalitySpinner);
    nationalityAdapter = ArrayAdapter.createFromResource
    (this, R.array.nationalityArray, android.R.layout.simple_spinner_item);
    nationalityAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    nationalitySpinner.setTag("nationality");
    nationalitySpinner.setAdapter(nationalityAdapter);
    nationalitySpinner.setOnItemSelectedListener(new MyOnItemSelectedListener());

public class MyOnItemSelectedListener implements OnItemSelectedListener {

    public void onItemSelected(AdapterView<?> parent,
            View view, int pos, long id) {

        if (pos != 0) {

            param.add(new BasicNameValuePair(parent.getTag().toString(), 
                    parent.getItemAtPosition(pos).toString()));
        }
    }

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

2 に答える 2

1

BaseAdapterリスト (文字列のリスト) を受け取るコンストラクターを使用して、 を拡張するクラスを作成し、それを実装する必要がありSpinnerAdapterます。

public class MySpinnerAdapter extends BaseAdapter<String> implements SpinnerAdapter {
    public MySpinnerAdapter(Context context, List<String> listStrings ) {
       super( context, android.R.layout.android.R.layout.simple_list_item_1, listStrings );
    }

    public View getDropDownView(int position, View convertView, ViewGroup parent) {
       if( convertView == null ) {
          convertView = new TextView( getContext() );
       }
       ((TextView) convertView).setText( getItem( position) );
    }
}
于 2012-05-21T21:52:49.897 に答える
0

CustomDialog にリンクされた EditTexts を使用してデータを表示しました。それははるかにうまく機能します。データを編集不可能な EditTexts onCreate および onSubmit にロードする AsyncTasks があります。関連するコードを次に示します。

    ageEditText = (EditText) findViewById(R.id.ageEditText);
    ageEditText.setOnClickListener(fieldListener);
    ageEditText.setId(0);
    educationEditText = (EditText) findViewById(R.id.educationEditText);
    educationEditText.setOnClickListener(fieldListener);
    educationEditText.setId(1);
    maritalEditText = (EditText) findViewById(R.id.maritalEditText);
    maritalEditText.setOnClickListener(fieldListener);
    maritalEditText.setId(2);
    backgroundEditText = (EditText) findViewById(R.id.backgroundEditText);
    backgroundEditText.setOnClickListener(fieldListener);
    backgroundEditText.setId(3);
    incomeEditText = (EditText) findViewById(R.id.incomeEditText);
    incomeEditText.setOnClickListener(fieldListener);
    incomeEditText.setId(4);
    partyEditText = (EditText) findViewById(R.id.partyEditText);
    partyEditText.setOnClickListener(fieldListener);
    partyEditText.setId(5);

public OnClickListener fieldListener = new OnClickListener() { public void onClick(View v) { FragmentManager fm = getSupportFragmentManager(); スイッチ (v.getId()) { ケース (0) :

        ChooseDialog ageDialog = new ChooseDialog("Age", ageEditText, act);
        ageDialog.show(fm, "fragment_edit_name");
            break;
        case (1) :
        ChooseDialog educationDialog = new ChooseDialog("Education", educationEditText, act);

        educationDialog.show(fm, "fragment_edit_name");
            break;
        case (2) :
        ChooseDialog maritalDialog = new ChooseDialog("Marital", maritalEditText, act);

        maritalDialog.show(fm, "fragment_edit_name");
            break;
        case (3) :
        ChooseDialog backgroundDialog = new ChooseDialog("Background", backgroundEditText, act);

        backgroundDialog.show(fm, "fragment_edit_name");
            break;
        case (4):
            ChooseDialog incomeDialog = new ChooseDialog("Income", incomeEditText, act);

            incomeDialog.show(fm, "fragment_edit_name");
                break;
        case (5):
            ChooseDialog partyDialog = new ChooseDialog("Income", partyEditText, act);

            partyDialog.show(fm, "fragment_edit_name");
                break;

        }

    }
};

private void submit() {
    params = new ArrayList<NameValuePair>();
    getButtons();
    params.add(new BasicNameValuePair("age", ageEditText.getText().toString()));
    params.add(new BasicNameValuePair("marital", maritalEditText.getText().toString()));
    params.add(new BasicNameValuePair("background", backgroundEditText.getText().toString()));
    params.add(new BasicNameValuePair("education", educationEditText.getText().toString()));
    params.add(new BasicNameValuePair("income", incomeEditText.getText().toString()));
    params.add(new BasicNameValuePair("sex", sexString));
    params.add(new BasicNameValuePair("employment", empString));
    params.add(new BasicNameValuePair("party", partyEditText.getText().toString()));

    params.add(new BasicNameValuePair("user", dbHandler.getUserDetails().get("email").toString()));
    DemoTask demoTask = new DemoTask(act, params);
    demoTask.execute();
}
于 2012-05-31T18:46:04.670 に答える