LoginSignup
2
1

More than 5 years have passed since last update.

Android TVで縦に画像サムネイルを表示する

Posted at

先日Android TVに触れる機会があったので、画像サムネイルを縦に表示したときのメモ。

PresenterとFragmentを準備

VerticalGridFragmentを継承したFragmentでVerticalGridPresenterを使う

VerticalGridPresenter gridPresenter = new VerticalGridPresenter();
gridPresenter.setNumberOfColumns(1);
setGridPresenter(gridPresenter);

mAdapter = new ArrayObjectAdapter(new CardPresenter());

int count = 0;
for (ImageItem item : list) {
    mAdapter.add(count++, item);
}

setAdapter(mAdapter);

setOnItemViewClickedListener(new ItemViewClickedListener());
setOnItemViewSelectedListener(new ItemViewSelectedListener());

表示用のCardPresenterを作る

public class CardPresenter extends Presenter {

    private ImageLoader mImageLoader;

    @Override
    public ViewHolder onCreateViewHolder(final ViewGroup parent) {
        // 今回は単なるImageViewのみ追加。別途TextViewとかも入れられる
        ImageView imageView = new ImageView(parent.getContext());


        // 中略...

        return new ViewHolder(imageView);
    }

    @Override
    public void onBindViewHolder(final ViewHolder viewHolder, final Object item) {
        // Objectとして渡されるitemからurl文字列取ったり、いろいろ
        ImageItem data = (ImageItem) item;

        ImageView imageView = (ImageView) viewHolder.view;
        ImageLoader.ImageListener listener = ImageLoader.getImageListener(
                imageView, R.drawable.something, R.drawable.something);
        mImageLoader.get(item.getUrl, listener);

        // 中略...
    }

    @Override
    public void onUnbindViewHolder(final ViewHolder viewHolder) {
    }
}

VerticalGridFragmentをaddする

任意のレイアウトにfragmentTransaction.addとかreplaceする。
d-padで選択されたときに何かしたい場合はリスナー追加してイベント受け取ればいい。

private final class ItemViewClickedListener implements OnItemViewClickedListener {
    @Override
    public void onItemClicked(final Presenter.ViewHolder itemViewHolder, final Object item,
                              final RowPresenter.ViewHolder rowViewHolder, final Row row) {
        // Clickされた時の何か
    }
}


private final class ItemViewSelectedListener implements OnItemViewSelectedListener {
    @Override
    public void onItemSelected(final Presenter.ViewHolder itemViewHolder, final Object item,
                               final RowPresenter.ViewHolder rowViewHolder, final Row row) {
        // 選択された時の何か
    }
}

PhoneやTabletと全然違って難しく、合ってるか分からないけどとりあえず表示は出来た。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1