class ArrayAdapter 的构造函数

constructor of class ArrayAdapter

我在 onCreateView() 中将其放入片段中:

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

我的列表适配器:

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

    }

阵列适配器:

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

    }
    }

现在我的问题是:我必须在 class MyListAdapterconstructor 中写入什么?

谢谢!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!

ArrayAdapter中有6个构造函数class。您必须根据您的要求实施其中任何一个。

更多详情,您可以关注这个link

每个扩展 class 必须至少有一个构造函数匹配父 class。所以你的 class 必须有一行构造函数并在上面调用 super,不需要自己的代码。

public MyListAdapter(Context context, int resource ) {

    super(context, resource);
    //your code 

}

但是当您创建适配器时,您正在使用构造函数,因此您可以创建任何构造函数,重要的是在其中使用 super。

在构造函数中例如,您可以实现代码以将数据设置为从数据库中列出。

例如,您可以像这样创建构造函数:

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