pot34731
pot34731

Reputation: 191

Sliding menu adapter(android)

Sorry for my english. I use SlideMenu libruary and i want use new font for textview, it old version use:

((ListView) ((Activity) context).findViewById(R.id.sidemenulistobject)).setAdapter(
                new ArrayAdapter<Object>(
                        context,
                        R.layout.sidemenu_item,
                        R.id.textSlide,
                        items
                )
        );

But this i cant get my textSlide and set new font. Now i add array adapter and set this in listView. This is my all code:

   menu = new SlidingMenu(context);

            menu.setMode(SlidingMenu.LEFT);
            menu.setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN);
            menu.setShadowWidth(15);
            menu.setFadeDegree(1.0f);
            menu.setShadowWidthRes(R.dimen.shadow_width);
            menu.setShadowDrawable(R.drawable.shadow);
            menu.attachToActivity((Activity) context, SlidingMenu.SLIDING_WINDOW);

            menu.setBehindWidth(400);
            menu.setMenu(R.layout.sidemenu);

    //add item in list view
        ArrayList<String> itemsObj = new ArrayList<String>();
            itemsObj.add("Новости");
            itemsObj.add("События");
            itemsObj.add("Наше меню");
            itemsObj.add("Фотографии");
            itemsObj.add("Видеозаписи");
            itemsObj.add("Контакты");
            itemsObj.add("Мой профиль");

    //get sidemenulistobject
    ListView lv = ((ListView) ((Activity) context).findViewById(R.id.sidemenulistobject));

//add adapter
    SlideAdapter adapter = new SlideAdapter((Activity) context, R.layout.sidemenu_item, itemsObj);
            lv.setAdapter(adapter);

This is my SlideAdapter

public class SlideAdapter extends ArrayAdapter<MenuCategoryObject>{

    ArrayList<String> listItems;
    int Resourse;
    Context context;
    LayoutInflater vi;

    private ImageLoader imageLoader;

    public SlideAdapter(Context context, int resource, ArrayList<String> listItems) {
        super(context, resource);

        this.listItems = listItems;
        Resourse = resource;
        this.context = context;

        vi = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);

    }

    public View getView(final int position, View convertView, ViewGroup parent) {
        ViewHolder holder;

        if(convertView == null) {
            convertView = vi.inflate(Resourse, null);
            holder = new ViewHolder();

            Typeface face=Typeface.createFromAsset(context.getAssets(), "font/AvenirNext-Medium.ttf");
            holder.textSlide = (TextView) convertView.findViewById(R.id.textSlide);
            holder.textSlide.setTypeface(face);

            convertView.setTag(holder);

        } else {
            holder = (ViewHolder) convertView.getTag();
        }

        holder.textSlide.setText(listItems.get(position));

        return convertView;
    }


    static class ViewHolder {
        public TextView textSlide;
    }

}

But my item list view dont show. I dont know why. Please help

Upvotes: 1

Views: 348

Answers (1)

Blackbelt
Blackbelt

Reputation: 157447

the problem is with your adapter. Since you are not providing the dataset to the super constructor, you have to override getCount and return its size. Add

public int getCount() {
  return listItems.size();
}

to your adapter

Upvotes: 2

Related Questions