2

Я делаю проект для университета, у меня есть DialogFragment, где я записываю новое животное для базы данных. В форме есть счетчик, который загружается из базы данных. Это «OnCreate» код DialogFragment:Почему мой Spinner пуст?

public void onCreate(Bundle savedInstanceState) { 

    super.onCreate(savedInstanceState); 
    setHasOptionsMenu(true); 

    LayoutInflater inflater = getActivity().getLayoutInflater(); 
    View v = inflater.inflate(R.layout.dialog_add_animal, null); 
    Spinner spEspecies = (Spinner) v.findViewById(R.id.spinner); 


    Cursor c = getActivity().getContentResolver().query(ContratoBBDD.Especies.URI_CONTENIDO,null,null,null,null); 
    SimpleCursorAdapter adaptador = 
      new SimpleCursorAdapter(getActivity().getApplicationContext() ,android.R.layout.simple_spinner_item,c, 
        new String[]{ContratoBBDD.Especies._id}, 
        new int [] {android.R.id.text1},SimpleCursorAdapter.FLAG_REGISTER_CONTENT_OBSERVER ); 

    Log.d("Tam", c.getCount() + ""); 
    Log.d("Col", c.getColumnCount() + ""); 
    adaptador.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 

    spEspecies.setAdapter(adaptador); 

    ActionBar actionBar = ((AppCompatActivity) getActivity()) 
      .getSupportActionBar(); 
    actionBar.setDisplayHomeAsUpEnabled(false); 
    actionBar.setDefaultDisplayHomeAsUpEnabled(false); 

} 

Я могу видеть в журнале и отладки, что курсор имеет информацию, как это делает вертушку - но когда я нажимаю на блесны, он пуст. Где я могу потерять информацию?

+1

Не уверен, что можно установить адаптер Spinner как «SimpleCursorAdapter». Сначала попробуйте извлечь данные, поместив их в массив, создав «ArrayAdapter» и установив его как «SpinnerAdapter». Скорее всего, он установит адаптер Spinner непосредственно перед извлечением данных. – CaptJak

ответ

0

Вы можете посмотреть эту ссылку

Putting cursor data into an array

//the constructor 
    Spinner spEspecies = (Spinner) v.findViewById(R.id.spinner); 
    //set the value to show 
    //change this line with query, better use ArrayList<String> 
String Especies[] = {"Homo Sapiens","Felis Domestica","Zea mays"}; 
    //insert to spinner 
    ArrayAdapter<String> aaspEspecies = new ArrayAdapter<String>(this, 
      android.R.layout.simple_spinner_item, Especies); 
    // The drop down view 
    aaspEspecies.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spEspecies.setAdapter(aaspEspecies); 
0

Спасибо вам Тог ответы. Я сделал изменения, которые вы сказали мне на других сообщениях, и я понял, что счетчик загружает данные массива. Я использовал этот код:

Cursor c = getActivity().getContentResolver().query(ContratoBBDD.Especies.URI_CONTENIDO,null,null,null,null); 

    ArrayList<String> especies = new ArrayList<String>(); 
    c.moveToFirst(); 
    while(!c.isAfterLast()) { 
     especies.add(c.getString(c.getColumnIndex("descripcion"))); 
     c.moveToNext(); 
    } 
    c.close(); 

    ArrayAdapter<String> aaspEspecies = new ArrayAdapter<String>(getActivity().getApplicationContext(), android.R.layout.simple_spinner_item,especies); 
    // The drop down view 
    aaspEspecies.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
    spEspecies.setAdapter(aaspEspecies); 

Когда я отладить приложение, вертушка это нормально, но когда я нажимаю его данные не показывают.