【问题标题】:Set spinner choice based on server data?根据服务器数据设置微调器选择?
【发布时间】:2012-05-21 21:28:13
【问题描述】:

我有一个带有 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.
    }
}

【问题讨论】:

  • 不是重复的。我有从服务器收集的数据。我知道用户做出了什么选择,并且之前将其上传/存储在我的服务器中。这特别适用于根据从服务器下载的字符串在 ArrayAdapter 中设置默认视图。

标签: php android sql spinner


【解决方案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) );
    }
}

【讨论】:

    【解决方案2】:

    我使用了链接到 CustomDialog 的 EditTexts 来显示数据。它工作得更好。我有 AsyncTasks 将数据加载到不可编辑的 EditTexts onCreate 和 onSubmit 中。下面是一些相关代码:

        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);
    

    公共 OnClickListener fieldListener = new OnClickListener() { 公共无效 onClick(查看 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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多