0
我嘗試使用CardScrollView代替單個View.I可以使用我的代碼成功設置卡片(使用自定義佈局)。當我的LocalBroadcastReceiver發送新消息時,需要更改我的TextFields的值。你有一些想法我可以解決它嗎?如何在Google Glass上實現自定義CardScrollView?
下面是我的項目中的一些代碼片段。
這是CardScrollView實現的活動中的onCreate方法。
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()方法
public void createCards() {
cards = new ArrayList<Integer>();
cards.add(R.layout.x_general);
cards.add(R.layout.x_temperatures);
}
這CardScrollAdapter。
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);
}
}
編輯 我能夠在活動的啓動有兩種定義卡的一些價值觀,但我仍然不確定如何更新從我的廣播接收器的數據。這裏我修改了XDataCardScrollAdapter中的getView方法。即使不知道這是一個可以接受的解決方案還是在這裏可能出現問題。
@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;
}
首先感謝您的回答,因爲上一次更改適配器。我昨天發現了notifyDataSetChanged()解決方案,這有所幫助。但是,這使得我的CardScrolLView(當我想滾動)有點慢。你正在談論尋找視圖。如何在CardScrollView中查找單個視圖?也許這是一個愚蠢的問題,但我沒有那麼有經驗。 – navacorn
TextView t =(TextView)findViewById(R.id.textView_speed); t.setText(「5000」); 從我的廣播接收機工作。我甚至困惑爲什麼這個工作,但它的工作。謝謝。 – navacorn