Ich habe einen Pager-Adapter, der eine komplexe Ansicht, die einen Kalender darstellt, aufbläht.Wie implementiere ich View-Recycling-Mechanismus für PagerAdapter?
Es dauert etwa ~ 350 ms, um jedes Jahr des Kalenders aufzublasen.
Um die Leistung zu verbessern, möchte ich den gleichen Mechanismus implementieren, der in der ListView
Array-Adapter von Recycling-Ansichten (convertView
Parameter in getView()
) existiert.
Hier ist meine aktuelle getView()
aus dem Adapter.
@Override
protected View getView(VerticalViewPager pager, final DateTileGrid currentDataItem, int position)
{
mInflater = LayoutInflater.from(pager.getContext());
// This is were i would like to understand weather is should use a recycled view or create a new one.
View datesGridView = mInflater.inflate(R.layout.fragment_dates_grid_page, pager, false);
DateTileGridView datesGrid = (DateTileGridView) datesGridView.findViewById(R.id.datesGridMainGrid);
TextView yearTitle = (TextView) datesGridView.findViewById(R.id.datesGridYearTextView);
yearTitle.setText(currentDataItem.getCurrentYear() + "");
DateTileView[] tiles = datesGrid.getTiles();
for (int i = 0; i < 12; i++)
{
String pictureCount = currentDataItem.getTile(i).getPictureCount().toString();
tiles[i].setCenterLabel(pictureCount);
final int finalI = i;
tiles[i].setOnCheckedChangeListener(new DateTileView.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(DateTileView tileChecked, boolean isChecked)
{
DateTile tile = currentDataItem.getTile(finalI);
tile.isSelected(isChecked);
}
});
}
return datesGridView;
}
Irgendwelche Zeiger oder Anweisungen für die Implementierung eines solchen Verhaltens? Insbesondere, wie kann ich im Adapter wissen, dass einer der DateTileGridViews
wird über den Bildschirm geklaut, so dass ich es im Speicher speichern konnte, um es beim nächsten Mal wieder zu verwenden.
Vielen Dank! – penguin86