首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在谷歌眼镜上实现自定义CardScrollView?

如何在谷歌眼镜上实现自定义CardScrollView?
EN

Stack Overflow用户
提问于 2015-05-05 17:07:39
回答 1查看 316关注 0票数 0

我尝试使用CardScrollView而不是单一视图,我可以用代码成功地设置卡片(带有自定义布局),当TextFields收到新消息时,需要更改LocalBroadcastReceiver的值。你知道我在哪里能解决这个问题吗?

以下是我的项目中的一些代码片段。

这是onCreate实现的活动中的CardScrollView方法。

代码语言:javascript
复制
private List<Integer> cards;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);

    createCards();
    xDataScrollView = new CardScrollView(this);
    xDataScrollView.setAdapter(new XDataCardScrollAdapter(cards, getLayoutInflater()));
    xDataScrollView.activate();
    setContentView(xDataScrollView);

    LocalBroadcastManager.getInstance(this).registerReceiver(mMessageReceiver, new IntentFilter("newMqttData")); 
    ...
}

使用以下createCards()方法

代码语言:javascript
复制
    public void createCards() {
    cards = new ArrayList<Integer>();
    cards.add(R.layout.x_general);
    cards.add(R.layout.x_temperatures);
}

还有这个CardScrollAdapter。

代码语言:javascript
复制
public class XDataCardScrollAdapter extends CardScrollAdapter{

private List<Integer> cards;
private LayoutInflater inflater;
private SingletonData data;

public XDataCardScrollAdapter(List<Integer> cards, LayoutInflater inflater){
    this.cards = cards;
    this.inflater = inflater;
    this.data = SingletonData.getInstance();
}
@Override
public int getCount() {
    return cards.size();
}

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

@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    return inflater.inflate(cards.get(i),viewGroup,false);
}

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

}

编辑I能够在活动启动时在两个定义的卡片中有一些值,但我仍然不确定如何从广播接收器更新数据。这里是我在XDataCardScrollAdapter中修改的XDataCardScrollAdapter方法。甚至不知道这是否是一个可以接受的解决方案,或可能出现问题。

代码语言:javascript
复制
@Override
public View getView(int i, View view, ViewGroup viewGroup) {
    if(view == null){
        view = inflater.inflate(cards.get(i), viewGroup);
    }
    if(i == 0){
        TextView textView_speed = (TextView) view.findViewById(R.id.textView_speed);
        textView_speed.setText(data.getSpeed());
    ... more values here
    }else if(i==1){
        TextView textView_temperatureValue = (TextView) view.findViewById(R.id.textView_temperatureValue);
        textView_temperatureValue.setText(data.getTemperature());
    ...more values here
    }
    return view;
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-05-06 05:41:55

在您的代码中,只需像通常那样通过查找视图并将内容更改为视图就可以更改数据。

我认为这应该是为了你。如果您试图在运行时添加卡,只需使用以下命令通知适配器您的数据表自上次以来发生了更改

代码语言:javascript
复制
xDataScrollView.getAdapter().notifyDataSetChanged();

希望这有帮助

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30059130

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档