package com.tutosandroidfrance.wearsample;
import android.app.Fragment;
import android.app.FragmentManager;
import android.graphics.drawable.Drawable;
import android.support.wearable.view.CardFragment;
import android.support.wearable.view.FragmentGridPagerAdapter;
import java.util.ArrayList;
import java.util.List;
public class ElementGridPagerAdapter extends FragmentGridPagerAdapter {
private List<Row> mRows;
public ElementGridPagerAdapter(List<Element> elements, FragmentManager fm) {
super(fm);
this.mRows = new ArrayList<Row>();
//Construit le tableau des éléménts à afficher
for (Element element : elements) {
mRows.add(new Row(
//pour l'instant nous ne mettrons qu'un élément par ligne
CardFragment.create(element.getTitre(), element.getTexte())
)
);
}
}
//Le fragment à afficher
@Override
public Fragment getFragment(int row, int col) {
Row adapterRow = mRows.get(row);
return adapterRow.getColumn(col);
}
//le drawable affichée en background pour la ligne [row]
@Override
public Drawable getBackgroundForRow(final int row) {
return DrawableCache.getInstance().get(row); //les images ont déjà été chargées dans un LruCache
}
@Override
public Drawable getBackgroundForPage(final int row, final int column) {
//nous pouvons spécifier un drawable différent pour le swipe horizontal
return getBackgroundForRow(row);
}
//Le nombre de lignes dans la grille
@Override
public int getRowCount() {
return mRows.size();
}
//Le nombre de colonnes par ligne
@Override
public int getColumnCount(int rowNum) {
return mRows.get(rowNum).getColumnCount();
}
/**
* Représentation d'une ligne - Contient une liste de fragments
*/
private class Row {
final List<Fragment> columns = new ArrayList<Fragment>();
public Row(Fragment... fragments) {
for (Fragment f : fragments) {
add(f);
}
}
public void add(Fragment f) {
columns.add(f);
}
Fragment getColumn(int i) {
return columns.get(i);
}
public int getColumnCount() {
return columns.size();
}
}
}