2016-07-24 4 views
0

у меня есть это в фрагмент в onCreateView():конструктор класса ArrayAdapter

ListView listView = (ListView) rootView.findViewById(R.id.listview); 
     ListAdapter listAdapter = new MyListAdapter(); 
     listView.setAdapter(listAdapter); 

MyListAdapter:

public class MyListAdapter extends ArrayAdapter { 

    /*public MyListAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    }*/ 


    /* public MyListAdapter(Context context, int resource, List<ClipData.Item> items) { 
     super(context, resource, items); 
    }*/ 




    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 

     Spinner spinner = (Spinner) convertView.findViewById(R.id.simpleSpinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       getContext(), 
       R.array.country_arrays, 
       android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 

     return row; 
    } 

    } 

ARRAY ADAPTER:

public class MyListAdapter extends ArrayAdapter implements AdapterView.OnItemSelectedListener{ 
    Spinner spinner; 
    ListView listView; 

    /*public MyListAdapter(Context context, int textViewResourceId) { 
     super(context, textViewResourceId); 
    }*/ 

    public MyListAdapter(Context context) { 
     super(context, R.layout.single_listview_item); 
    } 




    @Override 
    public View getView(int position, View convertView, ViewGroup parent) { 
     View row = convertView; 

     spinner = (Spinner) convertView.findViewById(R.id.simpleSpinner); 
     ArrayAdapter<CharSequence> adapter = ArrayAdapter.createFromResource(
       getContext(), 
       R.array.country_arrays, 
       android.R.layout.simple_spinner_item); 
     adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item); 
     spinner.setAdapter(adapter); 

     return row; 
    } 
    @Override 
    public void onItemSelected(AdapterView<?> parent, View view, int position, long id) { 
     //Spinner spinner = null; 
     System.out.println("ciao"); 
     listView.setSelection(position); 
     String selState = (String) listView.getSelectedItem(); 
     Toast.makeText(
       getContext(), 
       "Clicked on Planet: " + selState + "", Toast.LENGTH_SHORT).show(); 
    } 

    @Override 
    public void onNothingSelected(AdapterView<?> parent) { 

    } 
    } 

Теперь мой вопрос: что я необходимо написать в constructor класса MyListAdapter?

Спасибо !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!

+0

Сообщение код для MyListAdapter (я предполагаю, что это ваш класс расширения ArrayAdapter). – Spidey

+0

Я разместил его .... –

+0

@Spidey вы можете мне помочь? –

ответ

0

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

public MyListAdapter(Context context, int resource) { 

    super(context, resource); 
    //your code 

} 

Но когда Вы создаете свой адаптер, который вы используете конструктор так Вы можете создать любой конструктор, важно использовать супер в нем.

В конструкторе Вы можете, например, реализовать код для установки данных в список из базы данных.

Вы можете, например, создать конструктор так:

public MyListAdapter(Context context) { 

    super(context, R.layout.row_view); 

    //your code 


} 

и

ListView listView = (ListView) rootView.findViewById(R.id.listview); 
    ListAdapter listAdapter = new MyListAdapter(getContext()); 
    listView.setAdapter(listAdapter); 
+0

и в моем случае, как я могу написать конструктор? –

+0

и во фрагменте, какие аргументы я передаю в MyListAdapter? –

+0

наверняка Вы должны передать контекст, например, в моем примере: getContext() получит контекст из фрагмента. –

0

В классе ArrayAdapter имеется 6 конструкторов. Вы должны выполнить любой из них в соответствии с вашим требованием.

Для получения более подробной информации вы можете следовать этому link

+0

и в моем случае, как я могу написать конструктор? –

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