[英]Google Glass Fullscreen Custom Layout Cards
我有一個問題。 由於不推薦使用Card類,並且CardBuilder.EMBED_INSIDE受到相當的限制。 唯一的選擇是使用自定義視圖。 我還想使用CardScrollView和CardScrollAdapter。
訪問沒有CardBuilder.Layout.EMBED_INSIDE的Google Glass沉浸式自定義布局
但是我的問題是,我不能有多個視圖。
這是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
}
} }
好的,所以從您的帖子中我猜測這只是將您的布局之一膨脹到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); } }
我的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));
}
希望這對您有用
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.