Java 谷歌玻璃全屏幕定制布局卡

Java 谷歌玻璃全屏幕定制布局卡,java,android,android-layout,android-studio,google-glass,Java,Android,Android Layout,Android Studio,Google Glass,我有个问题。由于Card类已被弃用,且内部的CardBuilder.EMBED_相当有限。唯一的选择是使用自定义视图。我还想使用CardScrollView和CardScrollAdapter 拜访 但我的问题是,我不能有多个视图 以下是MyCustomViewClass: public class MyCustomView extends FrameLayout{ public MyCustomView (Context context) { super(context);

我有个问题。由于Card类已被弃用,且内部的CardBuilder.EMBED_相当有限。唯一的选择是使用自定义视图。我还想使用CardScrollView和CardScrollAdapter

拜访

但我的问题是,我不能有多个视图

以下是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
    }
} }
公共类检查活动扩展活动{
私有卡滚动查看mCardScroller;
私人手势检测器mGestureDetector;
私有视图;
私人卡滚动视图cardScroller;
私人ArrayList_cardsList;
私有MyCustomView\u myView;
保护列表mCards;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
createCards();
_cardsList=newarraylist();
_myView=新的MyCustomView(此);
_cardsList.add(_myView);
_cardScroller=新的CardScrollView(此);
MainCardsCrollAdapter=新的MainCardsCrollAdapter(\u cardsList);
_cardScroller.setAdapter(适配器);
_cardScroller.activate();
setContentView(_cardScroller);
}
私人信用卡(){
mCards=newarraylist();
}
公共类MainCardScrollAdapter扩展了CardScrollAdapter
{
ArrayList_cardsList;
公共主卡滚动适配器(ArrayList cardsList)
{
_cardsList=cardsList;
}
@凌驾
public int getCount(){
返回_cardsList.size();
}
@凌驾
公共对象getItem(int i){
返回卡片列表。获取(i);
}
@凌驾
公共视图getView(int i、视图视图、视图组视图组){
返回卡片列表。获取(i);
}
@凌驾
公共int getPosition(对象o){
返回(o)的卡片列表索引;;
}
@凌驾
public int getViewTypeCount(){
返回CardBuilder.getViewTypeCount();
}
@凌驾
public int getItemViewType(int位置){
return 2;//应该更改,这只是一个示例
}
} }

好吧,从你的帖子中我猜这只是将你的一个布局扩展到
CardScrollView
试试下面的方法

  • 创建一个如下所示的适配器类

    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);
       }
    }
    
    public void CreateCards() {
            mCards.add(new CustomCard(R.layout.firstview));
            mCards.add(new CustomCard(R.layout.secondview));
            mCards.add(new CustomCard(R.layout.thirdview));
        }
    
  • 在activity类中,创建并用所需的布局填充列表,并将它们传递给适配器,如下所示
  • onCreate()中

    CreateCards()
    方法看起来是这样的

    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);
       }
    }
    
    public void CreateCards() {
            mCards.add(new CustomCard(R.layout.firstview));
            mCards.add(new CustomCard(R.layout.secondview));
            mCards.add(new CustomCard(R.layout.thirdview));
        }
    

    希望这对您有用

    好吧,从您的帖子中我猜这只是将您的一个布局扩展到
    CardScrollView
    中,请尝试以下操作

  • 创建一个如下所示的适配器类

    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);
       }
    }
    
    public void CreateCards() {
            mCards.add(new CustomCard(R.layout.firstview));
            mCards.add(new CustomCard(R.layout.secondview));
            mCards.add(new CustomCard(R.layout.thirdview));
        }
    
  • 在activity类中,创建并用所需的布局填充列表,并将它们传递给适配器,如下所示
  • onCreate()中

    CreateCards()
    方法看起来是这样的

    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);
       }
    }
    
    public void CreateCards() {
            mCards.add(new CustomCard(R.layout.firstview));
            mCards.add(new CustomCard(R.layout.secondview));
            mCards.add(new CustomCard(R.layout.thirdview));
        }
    

    希望这对您有用

    谢谢。我的方法是使用带有嵌入式布局的卡片生成器。我遇到了一个奇怪的问题,当我有超过6张卡时,我的卡适配器显示了错误的布局。我假设CardBuilder中有一个bug。有了你的解决方案,一切都很顺利。因为这个布局没有页脚,所以您可能希望在这里查看给定的XML布局以获取填充和其他信息:谢谢。我的方法是使用带有嵌入式布局的卡片生成器。我遇到了一个奇怪的问题,当我有超过6张卡时,我的卡适配器显示了错误的布局。我假设CardBuilder中有一个bug。有了你的解决方案,一切都很顺利。由于此布局没有页脚,因此您可能希望在此处查看给定的XML布局以获取填充和填充: