2012-05-21 3 views
2

У меня есть страница с 5 прядильщиками. Поскольку пользователь вошел в систему и изменил параметры своей учетной записи, я хотел бы, чтобы spinner загрузил выбор пользователя для счетчика. В настоящий момент каждый счетчик загружает первое значение в своем адаптере «Пожалуйста, выберите». Это нормально, если сервер проверен, и пользователь еще не сделал выбор - но я бы хотел, чтобы это было принято на основе очевидных условий.Установить выбор счетчика на основе данных сервера?

Есть ли хороший способ сделать это? Я только что закончил код для отправки вариантов spinner на сервер и хранения их рядом с соответствующим пользователем. Поэтому я знаю, что мне нужны разные 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. 
    } 
} 
+0

Не дубликат. У меня есть данные, собранные с сервера. Я знаю, какой выбор сделал пользователь, и загрузил/сохранил его на моем сервере ранее. Это относится конкретно к настройке представления по умолчанию в ArrayAdapter на основе строк, загруженных с сервера. – Davek804

ответ

0

Я EditTexts связан с CustomDialog для отображения данных. Он работает намного лучше. У меня есть 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 = новый OnClickListener() { общественного недействительными OnClick (View v) { FragmentManager фм = 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(); 
} 
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)); 
    } 
} 
Смежные вопросы