2015-04-19 48 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