2015-04-19 55 views
1

我遇到問題。由於Card類已被棄用且CardBuilder.EMBED_INSIDE相當有限。唯一的選擇是使用自定義視圖。我也想使用CardScrollView和CardScrollAdapter。Google Glass全屏自定義佈局卡片

訪問Google Glass Immersion Custom Layout without CardBuilder.Layout.EMBED_INSIDE

但我的問題是,我不能有多個視圖。

這裏是MyCustomViewClass:

public class MyCustomView extends FrameLayout{ 
public MyCustomView (Context context) { 
    super(context); 
    initView(); 
} 

private void initView() 
{ 
    View view = inflate(getContext(), R.layout.imageview, null); 
    addView(view); 

    View view2 = inflate(getContext(), R.layout.secondview, null); 
    addView(view2); 
} 

而這就是我的主要活動類:

public class InspectionActivity extends Activity { 

private CardScrollView mCardScroller; 
private GestureDetector mGestureDetector; 
private View mView; 
private CardScrollView _cardScroller; 
private ArrayList<View> _cardsList; 
private MyCustomView _myView; 
protected List<CardBuilder> mCards; 
@Override 

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    createCards(); 
    _cardsList = new ArrayList<View>(); 
    _myView= new MyCustomView (this); 
    _cardsList.add(_myView); 
    _cardScroller = new CardScrollView(this) ; 
    MainCardsScrollAdapter adapter = new MainCardsScrollAdapter(_cardsList); 
    _cardScroller.setAdapter(adapter); 
    _cardScroller.activate(); 
    setContentView(_cardScroller); 
} 

private void createCards() { 
    mCards = new ArrayList<CardBuilder>(); 
} 
public class MainCardsScrollAdapter extends CardScrollAdapter 
{ 
    ArrayList<View> _cardsList; 
    public MainCardsScrollAdapter(ArrayList<View> cardsList) 
    { 
     _cardsList = cardsList; 
    } 

    @Override 
    public int getCount() { 
     return _cardsList.size(); 
    } 

    @Override 
    public Object getItem(int i) { 
     return _cardsList.get(i); 
    } 


    @Override 
    public View getView(int i, View view, ViewGroup viewGroup) { 
     return _cardsList.get(i); 
    } 

    @Override 
    public int getPosition(Object o) { 
     return _cardsList.indexOf(o); 
    } 

    @Override 
    public int getViewTypeCount() { 
     return CardBuilder.getViewTypeCount(); 
    } 

    @Override 
    public int getItemViewType(int position){ 
     return 2;//should be changed, it's just an example 
    } 
} } 

回答

4

好吧,所以從你的文章中,我猜這只是誇大你的佈局之一到CardScrollView嘗試以下。

  1. 創建一個適配器類,它看起來像這樣

    public class mainAdapter extends CardScrollAdapter { 
    
        private List<CustomCard> mCards; 
        private LayoutInflater inflater; 
    
        public mainAdapter(List<CustomCard> cards, LayoutInflater inf) 
        { 
         this.mCards = cards; 
         this.inflater = inf; 
        } 
    
        @Override 
        public int getCount() { 
         return mCards.size(); 
        } 
    
        @Override 
        public Object getItem(int i) { 
         return mCards.get(i); 
        } 
    
        @Override 
        public View getView(int i, View view, ViewGroup viewGroup) { 
         int card = mCards.get(i).getLayout(); 
         view = inflater.inflate(card, viewGroup, false); 
         return view; 
        } 
    
        @Override 
        public int getPosition(Object o) { 
         return this.mCards.indexOf(o); 
        } 
    } 
    

我CustomCard類看起來是這樣,你可以只使用一個List<Integer>代替壽

public class CustomCard { 
    public int getLayout() { 
     return layout; 
    } 

    public int layout; 

    public CustomCard(int layout) 
    { 
     this.layout = layout; 
    } 
} 
  • 在您的活動課程中,創建並填寫所需的內容列表並按如下所示將它們傳遞給您的適配器。
  • onCreate()

    CreateCards(); 
    mCardScroller = new CardScrollView(this); 
    mCardScroller.setAdapter(new mainAdapter(mCards, getLayoutInflater())); 
    

    CreateCards()方法會是這個樣子

    public void CreateCards() { 
         mCards.add(new CustomCard(R.layout.firstview)); 
         mCards.add(new CustomCard(R.layout.secondview)); 
         mCards.add(new CustomCard(R.layout.thirdview)); 
        } 
    

    希望這是利用你

    +0

    感謝您對本。我的方法是用EMBED_LAYOUT使用卡片生成器。我遇到了一個奇怪的問題,那就是當我的卡適配器顯示了錯誤的佈局時,我有6張以上的卡。我會假設CardBuilder中存在一個錯誤。用你的解決方案,它像一個迷人的工作。由於此佈局沒有頁腳,因此您可能需要查看給定的XML佈局以瞭解填充和填充內容:https://developers.google.com/glass/develop/gdk/card-design – Anthea