Android TV Leanback (七)(詳情視圖)

創(chuàng)建一個詳情presenter

Leanback library提供了視頻瀏覽框架滤淳,你可以使用presenter控制數(shù)據(jù)在屏幕上的顯示,包括視頻詳情概龄。這個框架為止提供了AbstractDetailsDescriptionPresenter馒铃,你需要實現(xiàn)onBindDescription(),將數(shù)據(jù)與視圖綁定栅迄。如下:

public class DetailsDescriptionPresenterextends AbstractDetailsDescriptionPresenter {
    @Override
    protected void onBindDescription(ViewHolder viewHolder, Object itemData) {
        MyMediaItemDetails details = (MyMediaItemDetails) itemData;

        // itemData包含視頻的詳細信息
        //需要顯示視頻的詳細信息
        // viewHolder.getTitle().setText(details.getShortTitle());

        // 使用靜態(tài)數(shù)據(jù)測試:
        viewHolder.getTitle().setText(itemData.toString());
        viewHolder.getSubtitle().setText("2014   Drama   TV-14");
        viewHolder.getBody().setText("Lorem ipsum dolor sit amet, consectetur "
            + "adipisicing elit, sed do eiusmod tempor incididunt ut labore "
            + " et dolore magna aliqua. Ut enim ad minim veniam, quis "
            + "nostrud exercitation ullamco laboris nisi ut aliquip ex ea "
            + "commodo consequat.");
    }
}

繼承DetailsFragment

使用DetailsFragment來顯示視頻的詳細信息站故,它提供額外的內(nèi)容,比如:預(yù)覽圖片毅舆,關(guān)于視頻的操作項(購買西篓、播放、關(guān)注等)憋活。您還可以提供額外的內(nèi)容岂津,如相關(guān)視頻或演員的列表。如下:

public class MediaItemDetailsFragment extends DetailsFragment {

    private static final String TAG = "MediaItemDetailsFragment";
    private ArrayObjectAdapter mRowsAdapter;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        Log.i(TAG, "onCreate");
        super.onCreate(savedInstanceState);
        buildDetails();
    }

    private void buildDetails() {
        ClassPresenterSelector selector = new ClassPresenterSelector();
    
        // 將視頻詳細信息的presenter附加到rowPresenter上
        FullWidthDetailsOverviewRowPresenter rowPresenter =
            new FullWidthDetailsOverviewRowPresenter(
                new DetailsDescriptionPresenter());

        selector.addClassPresenter(DetailsOverviewRow.class, rowPresenter);
        selector.addClassPresenter(ListRow.class,
                new ListRowPresenter());
        mRowsAdapter = new ArrayObjectAdapter(selector);

        Resources res = getActivity().getResources();
        DetailsOverviewRow detailsOverview = new DetailsOverviewRow(
                "Media Item Details");
   
        // 給詳情視圖添加圖片和操作
        detailsOverview.setImageDrawable(res.getDrawable(R.drawable.jelly_beans));
        detailsOverview.addAction(new Action(1, "Buy $9.99"));
        detailsOverview.addAction(new Action(2, "Rent $2.99"));
        mRowsAdapter.add(detailsOverview);

   
        // 添加相關(guān)項
        ArrayObjectAdapter listRowAdapter = new ArrayObjectAdapter(
            new StringPresenter());
        listRowAdapter.add("Media Item 1");
        listRowAdapter.add("Media Item 2");
        listRowAdapter.add("Media Item 3");
        HeaderItem header = new HeaderItem(0, "Related Items", null);
        mRowsAdapter.add(new ListRow(header, listRowAdapter));
        setAdapter(mRowsAdapter);
    }
}

創(chuàng)建詳情Activity

創(chuàng)建一個activity包含DetailsFragment來顯示詳情悦即。

創(chuàng)建布局:

<fragment xmlns:android="http://schemas.android.com/apk/res/android"
    android:name="com.example.android.mediabrowser.MediaItemDetailsFragment"
    android:id="@+id/details_fragment"
    android:layout_width="match_parent"
    android:layout_height="match_parent"/>

創(chuàng)建Activity:

public class DetailsActivity extends Activity{

     @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.details);
    }
}

注冊:

<application>
  ...
  <activity android:name=".DetailsActivity"
    android:exported="true"
    android:theme="@style/Theme.Leanback"/>
</application>

定義一個Listener監(jiān)聽每項的點擊

public class BrowseMediaActivity extends Activity {
    ...

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        ...

        // create the media item rows
        buildRowsAdapter();

        // add a listener for selected items
        mBrowseFragment.OnItemViewClickedListener(
            new OnItemViewClickedListener() {
                @Override
                public void onItemClicked(Object item, Row row) {
                    System.out.println("Media Item clicked: " + item.toString());
                    Intent intent = new Intent(BrowseMediaActivity.this,
                        DetailsActivity.class);
                    // pass the item information
                    intent.getExtras().putLong("id", item.getId());
                    startActivity(intent);
                }
            });
    }
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末吮成,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子辜梳,更是在濱河造成了極大的恐慌粱甫,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件冗美,死亡現(xiàn)場離奇詭異魔种,居然都是意外死亡,警方通過查閱死者的電腦和手機粉洼,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評論 3 392
  • 文/潘曉璐 我一進店門节预,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人属韧,你說我怎么就攤上這事安拟。” “怎么了宵喂?”我有些...
    開封第一講書人閱讀 163,359評論 0 353
  • 文/不壞的土叔 我叫張陵糠赦,是天一觀的道長。 經(jīng)常有香客問我,道長拙泽,這世上最難降的妖魔是什么淌山? 我笑而不...
    開封第一講書人閱讀 58,309評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮顾瞻,結(jié)果婚禮上泼疑,老公的妹妹穿的比我還像新娘。我一直安慰自己荷荤,他們只是感情好退渗,可當我...
    茶點故事閱讀 67,346評論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著蕴纳,像睡著了一般会油。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上古毛,一...
    開封第一講書人閱讀 51,258評論 1 300
  • 那天翻翩,我揣著相機與錄音,去河邊找鬼喇潘。 笑死体斩,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的颖低。 我是一名探鬼主播絮吵,決...
    沈念sama閱讀 40,122評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼忱屑!你這毒婦竟也來了蹬敲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評論 0 275
  • 序言:老撾萬榮一對情侶失蹤莺戒,失蹤者是張志新(化名)和其女友劉穎伴嗡,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體从铲,經(jīng)...
    沈念sama閱讀 45,403評論 1 313
  • 正文 獨居荒郊野嶺守林人離奇死亡瘪校,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,596評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了名段。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片阱扬。...
    茶點故事閱讀 39,769評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖伸辟,靈堂內(nèi)的尸體忽然破棺而出麻惶,到底是詐尸還是另有隱情,我是刑警寧澤信夫,帶...
    沈念sama閱讀 35,464評論 5 344
  • 正文 年R本政府宣布窃蹋,位于F島的核電站卡啰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏警没。R本人自食惡果不足惜匈辱,卻給世界環(huán)境...
    茶點故事閱讀 41,075評論 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望杀迹。 院中可真熱鬧梅誓,春花似錦、人聲如沸佛南。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽嗅回。三九已至,卻和暖如春摧茴,著一層夾襖步出監(jiān)牢的瞬間绵载,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評論 1 269
  • 我被黑心中介騙來泰國打工苛白, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留娃豹,地道東北人。 一個月前我還...
    沈念sama閱讀 47,831評論 2 370
  • 正文 我出身青樓购裙,卻偏偏與公主長得像懂版,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子躏率,可洞房花燭夜當晚...
    茶點故事閱讀 44,678評論 2 354

推薦閱讀更多精彩內(nèi)容