• Post Reply Bookmark Topic Watch Topic
  • New Topic
programming forums Java Mobile Certification Databases Caching Books Engineering Micro Controllers OS Languages Paradigms IDEs Build Tools Frameworks Application Servers Open Source This Site Careers Other Pie Elite all forums
this forum made possible by our volunteer staff, including ...
  • Campbell Ritchie
  • Jeanne Boyarsky
  • Ron McLeod
  • Paul Clapham
  • Liutauras Vilda
  • paul wheaton
  • Rob Spoor
  • Devaka Cooray
Saloon Keepers:
  • Stephan van Hulst
  • Tim Holloway
  • Carey Brown
  • Frits Walraven
  • Tim Moores
  • Mikalai Zaikin

Inheritance tree Refactoring : Android

Ranch Hand
Posts: 145
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Context : Android
Problem : There are many "Brands" like mufti , levis , blackberry and so on. Each Brand contains Various categories like Jeans, t-shirts and so on.
As a user i want to select the Brand and then the Category and then want to see the various items in a particular category . These items will be shown in a VIEWPAGER wherein the user can swipe and see various items.

Present Solution : I am using ViewPager and it requires an instance of PagerAdapter which sends the Page in accordance to the position.

I extended PagerAdapter with mine "MyAdapter". MyAdapter class contains various if-else statements which decides the page to send back to "ViewPager" in accordance to the item and category chosen by a user.

So i tried cleaning up my code and ends up as follows

I created class hierarchy as follows

MuftiAdapter extends BaseAdapter
LevisAdapter extends BaseAdapter

and so on so forth....

MuftiAdapter knows about what to return in its various possible categories. Levis know its own....
I created one AdapterFactory which provides me the right instance.

AdapterFactory now decides which instance to return depending upon the BRAND and CATEGORY.

Someone asked me what iff there are 100 BRANDS , will you make 100 classes for the same which extends BaseAdapter ?

I am not sure whether my above design is right or wrong ??? Is there any better design in this case when number of brands are very high.???

Thanks and Regards

Posts: 17652
Mac Android IntelliJ IDE Eclipse IDE Spring Debian Java Ubuntu Linux
  • Mark post as helpful
  • send pies
    Number of slices to send:
    Optional 'thank-you' note:
  • Quote
  • Report post to moderator
Whoever that was who asked the question about creating 100 adapter classes if you had 100 brands is spot on. The design you have lacks abstraction and is not a very good one. Its seems to me that you only need one Adapter class that can be parameterized with Brand and Category.
    Bookmark Topic Watch Topic
  • New Topic