2015-05-01 10 views
6

Verilen konum için kaydırın Bir Android TV uygulamasında Google Leanback widget'ları kullanıyorum. İçindeki ListRows ile bir Satır Öğesi kullanır.Android Leanback ListRow

Belirlemeye çalıştığım şey, satırlardan birinde belirli bir nesneye programlı olarak kaydırmanın herhangi bir yolu varsa. Leanback widget'ları için dokümanlar kazdım ama aradığım şeyi bulamıyorum.

cevap

5

Benzer bir gereksinim vardı: İlk seçilen öğeyi bir ListRow olarak ayarlamam gerekiyordu. Böyle ListRowPresenter sınıflara sona erdi:

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); 
    } 

} 

Umarım bu size yardımcı olacaktır.

+0

Teşekkürler, bence bu bana istediğimi yapmam gereken bilgileri veriyor. – ebr

+0

Örnek gerçekten çok iyi, seçmek için ilk öğenin arkasındaki mantığı değiştirmek de mümkündür. Teşekkürler – Massimo

5

Leanback'in (v23.3.0 + sürümünü düşünün) en son sürümünde, artık yalnızca satır konumunu değil, aynı zamanda satırdaki isteğe bağlı görevleri de gerçekleştirebilirsiniz. Senin durumunda, görev şöyle programlı seçim olacaktır:

BrowseFragment.setSelectedPosition(0, true, new ListRowPresenter.SelectItemViewHolderTask(2));

Gerek özel liste satır sunum ya da bir şey uygulamak için bunu yaptık

+0

OnActivityResult öğesindeki aynı satır aşağıdakileri verir: IllegalStateException: Başlıklar geçişi başlatılamıyor; herhangi bir yardım? – astuter

1

Ben Dönüş" uygulamak için gerekli zaman Bir satırdaki ilk öğe Geri tuşuna basarak ".

Bu yöntemi, Activity'ın onBackPressed()'dan çağırıyordum.

Bu yöntem yanlış döndürürse, Activity.super.onBackPressed() yöntemini çağırırız. true - biz yapmıyoruz.

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" yerine, istediğiniz herhangi bir konumu ayarlayabilirsiniz.