3

I've been trying set custom ListView adapter for navigation drawer it derived from BaseAdapter so when I set OnItemClickListener it doesn't work on either ListView.OnItemClickListener and AdapterView.OnItemClickListener.

Googled around but all examples derive from ArrayAdapter since BaseAdapter desired. Can anyone help me on this?

NavigationDrawer fragment onCreateView

drawerItems = new ArrayList<DrawerItem>();
drawerItems.add(DrawerItem.create(1, getString(R.string.ideas), getDrawable(R.drawable.ic_action_diamond)));
drawerItems.add(DrawerItem.create(2, getString(R.string.categories), getDrawable(R.drawable.ic_action_categories)));
drawerItems.add(DrawerItem.create(3, getString(R.string.priorities), getDrawable(R.drawable.ic_action_priorities)));

mDrawerListAdapter = MenuAdapter.newInstance(getActivity(), drawerItems);
mDrawerListView.setItemsCanFocus(true);

mDrawerListView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        Log.d(TAG, String.valueOf(position));
                selectItem(position);
    }
});

mDrawerListView.setAdapter(mDrawerListAdapter);
mDrawerListView.setItemChecked(mCurrentSelectedPosition, true);

My custom adapter

public class MenuAdapter extends BaseAdapter {
    private static final String TAG = "AD:MENU";

    private final LayoutInflater mLayoutInflater;
    private List<DrawerItem> items;
    private Context context;

    public MenuAdapter(Context ctx, List<DrawerItem> items) {
        this.items = items;
        this.context = ctx;
        this.mLayoutInflater = LayoutInflater.from(ctx);
    }

    public static MenuAdapter newInstance(Context ctx, List<DrawerItem> items) {
        return new MenuAdapter(ctx, items);
    }

    @Override
    public int getCount() {
        return items == null ? 0 : items.size();
    }

    @Override
    public Object getItem(int position) {
        return items.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View v, ViewGroup parent) {
        DrawerItem item = (DrawerItem) getItem(position);
        ViewHolder holder;

        if (v == null) {
            v = mLayoutInflater.inflate(R.layout.drawable_item, parent, false);
            holder = new ViewHolder();

            if (v != null) {
                holder.title = (TextView) v.findViewById(R.id.menu_title);

                holder.title.setTag(item.id);
                v.setTag(holder);
            }
        } else {
            holder = (ViewHolder) v.getTag();
        }

        holder.title.setText(item.title);
        holder.title.setCompoundDrawablesWithIntrinsicBounds(item.icon, null, null, null);

        Log.d(TAG, item.title);

        return v;
    }

    public class ViewHolder {
        TextView title;
    }

}
sultan
  • 5,978
  • 14
  • 59
  • 103

0 Answers0