1/* This file is auto-generated from SearchFragment.java.  DO NOT MODIFY. */
2
3package com.example.android.leanback;
4
5import android.content.Intent;
6import android.os.Bundle;
7import android.os.Handler;
8import android.support.v4.app.ActivityOptionsCompat;
9import android.support.v17.leanback.widget.ArrayObjectAdapter;
10import android.support.v17.leanback.widget.HeaderItem;
11import android.support.v17.leanback.widget.ImageCardView;
12import android.support.v17.leanback.widget.ListRow;
13import android.support.v17.leanback.widget.ListRowPresenter;
14import android.support.v17.leanback.widget.ObjectAdapter;
15import android.support.v17.leanback.widget.OnItemViewClickedListener;
16import android.support.v17.leanback.widget.Presenter;
17import android.support.v17.leanback.widget.Row;
18import android.support.v17.leanback.widget.RowPresenter;
19import android.text.TextUtils;
20import android.util.Log;
21
22public class SearchSupportFragment extends android.support.v17.leanback.app.SearchSupportFragment
23    implements android.support.v17.leanback.app.SearchSupportFragment.SearchResultProvider {
24    private static final String TAG = "leanback.SearchSupportFragment";
25    private static final int NUM_ROWS = 3;
26    private static final int SEARCH_DELAY_MS = 1000;
27
28    private ArrayObjectAdapter mRowsAdapter;
29    private Handler mHandler = new Handler();
30    private String mQuery;
31
32    @Override
33    public void onCreate(Bundle savedInstanceState) {
34        super.onCreate(savedInstanceState);
35
36        mRowsAdapter = new ArrayObjectAdapter(new ListRowPresenter());
37
38        setBadgeDrawable(getActivity().getResources().getDrawable(R.drawable.ic_title));
39        setTitle("Leanback Sample App");
40        setSearchResultProvider(this);
41        setOnItemViewClickedListener(new ItemViewClickedListener());
42    }
43
44    @Override
45    public ObjectAdapter getResultsAdapter() {
46        return mRowsAdapter;
47    }
48
49    @Override
50    public boolean onQueryTextChange(String newQuery) {
51        Log.i(TAG, String.format("Search Query Text Change %s", newQuery));
52        mRowsAdapter.clear();
53        loadQuery(newQuery);
54        return true;
55    }
56
57    @Override
58    public boolean onQueryTextSubmit(String query) {
59        Log.i(TAG, String.format("Search Query Text Submit %s", query));
60        mRowsAdapter.clear();
61        loadQuery(query);
62        return true;
63    }
64
65    private void loadQuery(String query) {
66        mQuery = query;
67        mHandler.removeCallbacks(mDelayedLoad);
68        if (!TextUtils.isEmpty(query) && !query.equals("nil")) {
69            mHandler.postDelayed(mDelayedLoad, SEARCH_DELAY_MS);
70        }
71    }
72
73    private void loadRows() {
74        for (int i = 0; i < NUM_ROWS; ++i) {
75            ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(new CardPresenter());
76            listRowAdapter.add(new PhotoItem("Hello world", R.drawable.gallery_photo_1));
77            listRowAdapter.add(new PhotoItem("This is a test", R.drawable.gallery_photo_2));
78            HeaderItem header = new HeaderItem(i, mQuery + " results row " + i);
79            mRowsAdapter.add(new ListRow(header, listRowAdapter));
80        }
81    }
82
83    private Runnable mDelayedLoad = new Runnable() {
84        @Override
85        public void run() {
86            loadRows();
87        }
88    };
89
90    private final class ItemViewClickedListener implements OnItemViewClickedListener {
91        @Override
92        public void onItemClicked(Presenter.ViewHolder itemViewHolder, Object item,
93                RowPresenter.ViewHolder rowViewHolder, Row row) {
94            Intent intent = new Intent(getActivity(), DetailsSupportActivity.class);
95            intent.putExtra(DetailsSupportActivity.EXTRA_ITEM, (PhotoItem) item);
96
97            Bundle bundle = ActivityOptionsCompat.makeSceneTransitionAnimation(
98                    getActivity(),
99                    ((ImageCardView)itemViewHolder.view).getMainImageView(),
100                    DetailsSupportActivity.SHARED_ELEMENT_NAME).toBundle();
101            getActivity().startActivity(intent, bundle);
102        }
103    }
104}
105