我在Android TV應用程序中使用Google Leanback小部件。它利用了ListFows中的RowsFragment。滾動到Android中的給定位置Leanback ListRow
我想確定的是,如果有任何方式編程滾動到其中一個行內的特定對象。我已經挖掘了Leanback小部件的文檔,但無法找到我要找的內容。
我在Android TV應用程序中使用Google Leanback小部件。它利用了ListFows中的RowsFragment。滾動到Android中的給定位置Leanback ListRow
我想確定的是,如果有任何方式編程滾動到其中一個行內的特定對象。我已經挖掘了Leanback小部件的文檔,但無法找到我要找的內容。
我有類似的需要:我需要設置ListRow中的初始選定項目。 我結束了繼承的ListRowPresenter這樣的:
import android.support.v17.leanback.widget.ListRowPresenter;
import android.support.v17.leanback.widget.RowPresenter;
public class CustomPresenter extends ListRowPresenter {
private int mInitialSelectedPosition;
public CustomPresenter(int position) {
this.mInitialSelectedPosition = position;
}
@Override
protected void onBindRowViewHolder(RowPresenter.ViewHolder holder, Object item) {
super.onBindRowViewHolder(holder, item);
ViewHolder vh = (ListRowPresenter.ViewHolder) holder;
vh.getGridView().setSelectedPosition(mInitialSelectedPosition);
}
}
希望這會幫助你。
在最新版本的Leanback(think v23.3.0 +)中,您現在不僅可以指定行位置,還可以在行上執行可選任務。在你的情況下,任務將程序選擇像這樣:
BrowseFragment.setSelectedPosition(0, true, new ListRowPresenter.SelectItemViewHolderTask(2));
無需實現自定義列表行的主持人或任何
我的onActivityResult中的代碼行數如下:IllegalStateException:無法啓動標題轉換;任何幫助? – astuter
我已經做到了,當我需要實現「迴歸通過按Back鍵排列第一個項目「。
我從Activity的onBackPressed()中調用此方法。
如果此方法返回false我們調用Activity.super.onBackPressed()。 If true - 我們沒有。
public boolean onBackPressed(){
boolean consumeBack;
int selectedRowPosition = getRowsFragment().getSelectedPosition();
ListRowPresenter.ViewHolder selectedRow = (ListRowPresenter.ViewHolder) getRowsFragment().getRowViewHolder(selectedRowPosition);
int selectedItemPosition = selectedRow.getSelectedPosition();
if(selectedItemPosition == 0){
consumeBack = false;
} else {
consumeBack = true;
getRowsFragment().setSelectedPosition(selectedRowPosition, true, new ListRowPresenter.SelectItemViewHolderTask(0));
}
return consumeBack;
}
而不是「0」,你可以設置你需要的任何位置。
謝謝,我認爲這給了我需要做我想做的事情的信息。 – ebr
該示例非常好,也可以修改要選擇的第一項背後的邏輯。謝謝 – Massimo