2014-01-06 2 views
0

Мне нужна небольшая помощь, чтобы получить представление о том, как реорганизовать мой код, но я не вижу вариантов, кроме того, что сделано, я хотел бы добавить объекты, но не использовать так много списков (и если условия).Идеи для кода рефакторинга со многими списками

Вот мой код, если кто-то может помочь, я ценю. Благодарности

@ViewById 
BannerHomeViewPager place1, place2, place3, place4, place5, place6, place7, 
     place8, place9; 

Списки:

private List<HomeItem> allHomeItems = new ArrayList<HomeItem>(), 
     placeItems1 = new ArrayList<HomeItem>(), 
     placeItems2 = new ArrayList<HomeItem>(), 
     placeItems3 = new ArrayList<HomeItem>(), 
     placeItems4 = new ArrayList<HomeItem>(), 
     placeItems5 = new ArrayList<HomeItem>(), 
     placeItems6 = new ArrayList<HomeItem>(), 
     placeItems7 = new ArrayList<HomeItem>(), 
     placeItems8 = new ArrayList<HomeItem>(), 
     placeItems9 = new ArrayList<HomeItem>(); 

1) Предметы издевались, ок.

2)

@UiThread 
void updateUI() { 

    if (allHomeItems != null && allHomeItems.size() > 0) { 

     for (HomeItem item : allHomeItems) { 
      if (item.getPlacement().contains("1")) { 
       placeItems1.add(item); 
      } else if (item.getPlacement().contains("2")) { 
       placeItems2.add(item); 
      } else if (item.getPlacement().contains("3")) { 
       placeItems3.add(item); 
      } else if (item.getPlacement().contains("4")) { 
       placeItems4.add(item); 
      } else if (item.getPlacement().contains("5")) { 
       placeItems5.add(item); 
      } else if (item.getPlacement().contains("6")) { 
       placeItems6.add(item); 
      } else if (item.getPlacement().contains("7")) { 
       placeItems7.add(item); 
      } else if (item.getPlacement().contains("8")) { 
       placeItems8.add(item); 
      } else { 
       placeItems9.add(item); 
      } 
     } 

    } 
    setupAdapters(); 
} 

3) setupAdapters()

private void setupAdapters() { 

    if (place1 != null) 
     place1.update(placeItems1); 

    if (place2 != null) 
     place2.update(placeItems2); 

    if (place3 != null) 
     place3.update(placeItems3); 

    if (place4 != null) 
     place4.update(placeItems4); 

    if (place5 != null) 
     place5.update(placeItems5); 

    if (place6 != null) 
     place6.update(placeItems6); 

    if (place7 != null) 
     place7.update(placeItems7); 

    if (place8 != null) 
     place8.update(placeItems8); 

    if (place9 != null) 
     place9.update(placeItems9); 
} 
+1

возможно использовать хэш-карту для завершить список и использовать размещение в качестве ключа? –

ответ

1

Как @DanielBo ответ:

private Map<String, ArrayList<HomeItem>> placeItems = new HashMap<String,ArrayList<HomeItem>>(); 



    void updateUI() { 
     if (allHomeItems != null && allHomeItems.size() > 0) { 
      for (HomeItem item : allHomeItems) { 
       if(!placeItems.containsKey(item.getPlacement())){ 
     placeItems.put(item.getPlacement(), new ArrayList<HomeItem>()); 
       } 
     placeItems.get(item.getPlacement()).add(item); 
      } 
     } 
     setupAdapters(); 
    } 

Но почему вы используете так много взглядов? Я действительно не могу сказать, правильно ли это bcs, я не знаю цели этого, но я не могу понять, как хорошо использовать так много списков в одном макете ...

+0

Спасибо, приятель, отлично поработал для меня. –

+0

@ LeonardoLeonardo не проблема, но теперь мне интересно, почему у вас так много просмотров на вашем макете: P, можете ли вы дать мне свет? – GhostDerfel

+0

уверен ... Я не знаю, поймете ли вы мои объяснения, потому что я новичок в андроиде. Во всяком случае, в Деятельности есть анимации, каждый баннер получит 3 снимка, и эти фото загружаются с 4 до 4 секунд. Но клиент не отправил реальные изображения, поэтому нам пришлось издеваться над многими вещами ... –

Смежные вопросы