【问题标题】:How to get only 6 item from list?如何从列表中仅获取 6 项?
【发布时间】:2017-05-22 05:01:46
【问题描述】:

我有一个List<Restaurant> restaurants(11 项)。我只想从 11 个项目中获取 6 个项目以显示在 gridview 中。现在,我循环所有 size()。如何循环仅获得 6 个项目。

if (restaurants != null && restaurants.size() > 0) { 
    for (int i = 1; i < restaurants.size(); i++) { 
      adapter = new ItemAdapter(MainActivity.this, restaurants);
      grid_view.setAdapter(adapter);
    }

}

【问题讨论】:

  • 将 restaurant.size() 改为 6
  • 更改我

标签: android list loops


【解决方案1】:

最好的方法,

@Override
    public int getItemCount() {
        if(lotteryList.size()>6){
           return 6; 
        }
        else{
           return lotteryList.size();
        }
    }

【讨论】:

    【解决方案2】:

    试试这个代码。

     List<Restaurant> restaurantsTemp=new ArrayList();
    for (int i = 0; i < 6; i++) {
     restaurantsTemp.add(restaurants.get(i));
    }
     adapter = new ItemAdapter(MainActivity.this, restaurantsTemp);
     grid_view.setAdapter(adapter);
    

    【讨论】:

      【解决方案3】:

      如果您的列表已经有 11 条记录,则无需循环。在适配器构造函数中传递第三个参数并将其设置为在适配器中返回为 6 的计数。

      adapter = new ItemAdapter(MainActivity.this, restaurants,6);
      grid_view.setAdapter(adapter);
      

      【讨论】:

        【解决方案4】:

        您好,您需要使用此代码,而且您不需要在循环中设置适配器。

          if (restaurants != null && restaurants.size() > 0) { // restaurants.size() (11 items)
            List<Restaurant> modifiedList=new ArrayList();
                for (int i = 1; i < restaurants.size(); i++) { // 11 items
        
                     modifiedList.add(restaurants.get(i-1));
                     if(modifiedList.size()==6){
                     break;
                   }
                }
              adapter = new ItemAdapter(MainActivity.this, modifiedList);
              grid_view.setAdapter(adapter);
        
        
            }
        

        【讨论】:

          【解决方案5】:
          ArrayList<String> sixItem = new ArrayList<>;
          if (restaurants.size() >= 6) { // restaurants.size() (11 items)
             for (int i = 1; i < 7; i++) { // 11 items
                 sixItem.add(i-1);    
          }
          
          } else {
             for (int i = 1; i < restaurants.size(); i++) { 
                 sixItem.add(i-1); 
             }
          }
          adapter = new ItemAdapter(MainActivity.this, sixItem);
          grid_view.setAdapter(adapter);
          

          如果 restaurants.size() 小于 6 则不会显示错误。

          【讨论】:

          • 它不只显示 11 项中的 6 项。我们需要在适配器中设置i吗?
          • @Tr.Buu 您想在所有时间点仅显示前 6 个项目吗?
          • 而不是餐厅应用restaurants.get(i) 或者如果它是数组传递餐厅[i]。迭代器 i 应该是从 0 到 6。
          • 列表有 11 项。我只想在 gridview 中显示 6 个项目。稍后,点击查看更多,将显示 11 项。
          • 你必须将arraylist的大小限制为6然后使用适配器不需要每次都迭代。
          【解决方案6】:

          在您的 ItemAdapter getCount()getItemCount() 中试试这个

          @Override
              public int getItemCount() {
                  if(lotteryList.size()>6){
                     return 6; 
                  }
                  else{
                     return lotteryList.size();
                  }
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多