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 回答