3

Я использую ArrayAdapter в диалоговом окне диалога, который работает на Android 4.0 и более, но не в версии 2.3.ArrayAdapter требует, чтобы идентификатор ресурса был TextView в DialogFragment

@Override 
public Dialog onCreateDialog(Bundle savedInstanceState) { 

    AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); 
    // Get the layout inflater 
    LayoutInflater inflater = getActivity().getLayoutInflater(); 

    View view = inflater.inflate(R.layout.dialog, null); 

    Spinner spReglement; 
    spReglement = (Spinner)view.findViewById(R.id.listReglements); 

    ArrayAdapter<String> adapterList = new ArrayAdapter<String>(getActivity(), android.R.layout.simple_list_item_1); 
    adapterList.setDropDownViewResource(R.layout.customspinner); 
    spReglement.setAdapter(adapterList); 

    HashMap<Integer, String> mapReglement = new HashMap<Integer, String>(); 
    mapReglement.put(-1, ""); 
    adapterList.add(""); 
    for(int i=0; i<alReglement.size();i++){ 
     String libelle = String.valueOf(alReglement.get(i).get("Libelle"));   
     mapReglement.put(i, libelle); 
     adapterList.add(libelle);   
    } 
    builder.setView(view) 
      .setPositiveButton("Valider", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        mListener.onDialogPositiveClick(DialogFSE.this); 
       } 
      }) 
      .setNegativeButton("Annuler", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int id) { 
        mListener.onDialogNegativeClick(DialogFSE.this); 
       } 
      });  
    return builder.create(); 

} 

My Layout "Диалог" содержит 3 EditText и 1 Spinner, мой макет "customspinner" constains только TextView.

Когда я исполняю мое приложение на Android 2.3 я следующее исключение: к неустранимым: com.mypackage.myapss.mainThread java.lang.IllegalStateException: ArrayAdapter требует идентификатор ресурса быть TextView ...

Не сейчас, если это полезно, но я использую библиотеку поддержки v4 для Android в моем приложении.

ответ

5

Вам необходимо использовать этот конструктор ArrayAdapter.

ArrayAdapter(Context context, int resource, int textViewResourceId, List<T> objects); 

EDIT:

ArrayAdapter<String> adapterList = new ArrayAdapter<String>(getActivity(), R.layout.customspinnerregul, R.id.tvcustomspinner, al) 
+0

Я читал, что в других темах, но я не понимаю, как использовать его. Например, я попробовал следующее: ArrayAdapter adapterList = new ArrayAdapter (getActivity(), android.R.layout.simple_list_item_activated_1, R.layout.tvcustomspinner, al); Где R.layout.tvcustomspinner - это мой TextView в «customspinnerregul.xml», и al - это мой ArrayList, который содержит всю строку, которая мне нужна в моем адаптере, но это не работает. –

+0

Проверьте мой обновленный ответ – Piyush

+0

Я попробовал это решение раньше ... но с ошибкой! Это работает сейчас, спасибо за вашу помощь :) –

Смежные вопросы