Search code examples
javaandroidadt

The constructor Object(Context, int, List<DrawerItem>) is undefined


Please help me resolve this issue. I'm making a drawer for my app and I'm receiving these errors from ADT:

  • The constructor Object(Context, int, List) is undefined

  • The method getView(int, View, ViewGroup) of type CustomDrawerAdapter must override or implement a supertype method

This is my code for CustomDrawerAdapter class:

package com.example.ico;
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ArrayAdapter;
import android.widget.ImageView;
import android.widget.TextView;

public class CustomDrawerAdapter {

     Context context;
     List<DrawerItem> drawerItemList;
     int layoutResID;

     public CustomDrawerAdapter(Context context, int layoutResourceID, List<DrawerItem> listItems) {
         super(context, layoutResourceID, listItems);
           this.context = context;
           this.drawerItemList = listItems;
           this.layoutResID = layoutResourceID;

     }

     @Override
     public View getView(int position, View convertView, ViewGroup parent) {
           // TODO Auto-generated method stub

           DrawerItemHolder drawerHolder;
           View view = convertView;

           if (view == null) {
                 LayoutInflater inflater = ((Activity) context).getLayoutInflater();
                 drawerHolder = new DrawerItemHolder();

                 view = inflater.inflate(layoutResID, parent, false);
                 drawerHolder.ItemName = (TextView) view
                             .findViewById(R.id.drawer_itemName);
                 drawerHolder.icon = (ImageView) view.findViewById(R.id.drawer_icon);

                 view.setTag(drawerHolder);

           } else {
                 drawerHolder = (DrawerItemHolder) view.getTag();

           }

           DrawerItem dItem = (DrawerItem) this.drawerItemList.get(position);

           drawerHolder.icon.setImageDrawable(view.getResources().getDrawable(
                       dItem.getImgResID()));
           drawerHolder.ItemName.setText(dItem.getItemName());

           return view;
     }

     private static class DrawerItemHolder {
           TextView ItemName;
           ImageView icon;
     }


}

Solution

  • To fix all your problems, you need to make your class extend ArrayAdapter.

    public class CustomDrawerAdapter extends ArrayAdapter {