创建多张卡片以在 google 玻璃上滚动

Creating multiple cards to scroll on google glass

我正在尝试构建可以在 google 玻璃上滚动的多个卡片视图。我要显示的数据是存储在数组列表中的对象的数据。

我不知道为什么我使用以下代码在我的玻璃上出现黑屏。尝试按照 google 上的文档进行操作,但没有结果。请原谅我,因为我是 google 玻璃的新手。

Activity Class

    @Override
    protected void onCreate(Bundle bundle) { 
        super.onCreate(bundle);
        mCardScroller = new CardScrollView(this);
        mCards = new ArrayList<CardBuilder>();

        for(int i=0; i<dataSet.size(); i++) { 
           CardBuilder card = new CardBuilder(this,Layout.COLUMNS);
           card.setText(dataSet.get(i).getInfo());
           mCards.add(card);
        }
        mCardScroller.setAdapter(new danceAdapter(mCards));
        setContentView(mCardScroller);
     }

舞蹈适配器Class

public class danceAdapter extends CardScrollAdapter { 
    private ArrayList<CardBuilder> mCards;
    public danceAdapter(ArrayList<CardBuilder> cards){ 
        this.mCards = cards;
    }

    @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) { 
        return mCards.get(i).getView();
    }
    @Override
    public int getPosition(Object o) { return this.mCards.indexOf(o); }
}

我的主 activity class 会不会有什么问题?请帮助代码片段。非常感激。

您忘记激活 ScrollView。另外作为旁注,你不应该在适配器之外和一切之前制作你的卡。该循环不仅效率低下(每次迭代都运行 .size),而且不需要存储视图的内存量。尝试做这样的事情:

@Override
protected void onCreate(Bundle bundle) { 
    super.onCreate(bundle);
    mCardScroller = new CardScrollView(this);
    mCardScroller.setAdapter(new danceAdapter(dataset));
    mCardScroller.activate();
    setContentView(mCardScroller);
 }


 public class danceAdapter extends CardScrollAdapter { 
    private ArrayList<Object> mDataSet;
    public danceAdapter(ArrayList<Object> dataset){ 
        this.mDataSet = dataset;
    }

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

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

    @Override
    public View getView(int i, View view, ViewGroup viewGroup) { 
        Object dataset = getItem(i);

        return new CardBuilder(context, CardBuilder.Layout.TEXT)
            .setText(dataset.getInfo())
            .getView();
    }

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

但是如果你想做一个自定义视图而不是支持的 CardBuilder。您只需要像往常一样在 getView 方法中膨胀和 return 视图。