在getView of Adapter Android中搜索对象列表的有效方法

时间:2016-03-04 07:09:57

标签: java android algorithm performance

我有一个自定义对象列表。这些对象包含过去2年(每天)的预订信息。这是一个非常大的列表,包含大约730(365 + 365)项。

我还有一个带有日间单元格的网格视图(如日历),如果它们符合某些条件,我想在每天绘制不同的东西。

问题是对于getView中的每个单元格,我必须循环这个大的列表。

   @Override
public View getView(int position, View convertView, ViewGroup parent)
{
    ...

     String date = dateList.get(position).getDate();
     for(Reservation item: reallyBigList){
           if(item.getDate.equals(date)){
                ...
              break;
            }
     }

    ...
}

这种方法使我的列表非常滞后。我正在寻找一种最有效的方法来实现这一目标。我能想到的一个解决方案就是拆分这个大清单。但我想知道是否还有其他办法。

2 个答案:

答案 0 :(得分:3)

您可以根据某些唯一属性制作地图。假设你在这种情况下有约会。

答案 1 :(得分:0)

您可以在for循环中的每一天使用switch case来在一次迭代中填充day cell

for(Reservation item: reallyBigList){
       if(item.getDate.equals(date)){
          //convert day from date to integer
          switch(day){
            case 1:
            case 2:
            case 3:
            //..
            default:
          }
          //may need multiple switch statements for month and year as reqd
        }
 }

请参阅here以获取具有嵌套语句的开关。

希望这可以在一次但稍长的迭代中完成工作。