Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/201.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用许多列表重构代码的想法_Android - Fatal编程技术网

Android 使用许多列表重构代码的想法

Android 使用许多列表重构代码的想法,android,Android,我需要一些帮助来了解如何重构我的代码,但我看不到除了所做的之外的选项,我想添加对象,但不使用太多列表(以及if的条件) 这是我的代码,如果有人能帮忙,我很感激。谢谢 @ViewById BannerHomeViewPager place1, place2, place3, place4, place5, place6, place7, place8, place9; 名单如下: private List<HomeItem> allHomeItems = new Ar

我需要一些帮助来了解如何重构我的代码,但我看不到除了所做的之外的选项,我想添加对象,但不使用太多列表(以及if的条件)

这是我的代码,如果有人能帮忙,我很感激。谢谢

@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>();
3)
setupAdapters()

如@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();
  }
private-Map-placeItems=new-HashMap();
void updateUI(){
if(allHomeItems!=null&&allHomeItems.size()>0){
用于(HomeItem项目:所有HomeItems){
如果(!placeItems.containsKey(item.getPlacement())){
placeItems.put(item.getPlacement(),newArrayList());
}
placeItems.get(item.getPlacement()).add(item);
}
}
设置适配器();
}

但是为什么要使用这么多视图呢?我真的说不出这是否正确,因为我不知道这是为什么,但我想不出在同一布局中有这么多列表视图有什么好的用途…

也许可以使用哈希图来包装列表,并使用位置作为键?@LeonardoOleonardo没问题,但现在我很好奇为什么布局中有这么多视图:p,你能给我点灯吗?当然。。。我不知道你是否能理解我的解释,因为我对安卓系统还不熟悉。无论如何,活动中有一些动画,每个横幅将收到3张图片,这些图片将在4到4秒钟内加载。但是,客户端并没有发送真正的图像,所以我们不得不模拟许多事情……您还可以使用一个带有3列的自定义ListView和一个自定义适配器来实现这一点:D
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);
}
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();
  }