Android: navigation box with onItemClickListener custom adapter

I am trying to configure a custom ListView adapter for a navigation box obtained from BaseAdapter, so when I install OnItemClickListener, it does not work either on ListView.OnItemClickListeneror on AdapterView.OnItemClickListener.

At Google, but all examples are derived from ArrayAdapter, as BaseAdapterrequired. Can someone help me with this?

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

}
+3
source share

All Articles