[英]How to add cardview programmatically inside view but use layout declared in xml?
[英]How to add view to cardview inside livedata observer
我正在嘗試將一些單選按鈕添加到卡片視圖中。 這是我的代碼:
主活動.java
cardView = findViewById(R.id.card_view);
mGameViewModel.setUpGame().observe(this,this::loadRound);
private void loadRound(List<Smiley> smileys) {
if (smileys == null) {
return;
}
mAnswersView.loadAnswers(smileys, cardView);
mGameViewModel.startNewGameRound();
}
答案視圖
public void loadAnswers(List<Smiley> smileys, CardView cardView) {
if (smileys == null) {
return;
}
removeAllViews();
LayoutInflater inflater = LayoutInflater.from(getContext());
for (Smiley smiley : smileys) {
RadioButton button = (RadioButton) inflater.inflate(R.layout.answer_item, this, false);
button.setText(smiley.getName());
button.setTag(R.string.answer_tag, smiley.getCode());
cardView.addView(button);
}
}
但這似乎不起作用。 請問有什么想法嗎?
編輯:這里的問題是我嘗試創建的單選按鈕沒有顯示。 我已經做了一些調試,所有的方法都被調用,直到 addView 方法。 但是當我查看設備時,沒有“擴展”視圖,在這種情況下,根本沒有單選按鈕。
所以,我通過在 CardView 中使用 LinearLayout 解決了這個問題。 然后我將 LinearLayout 解析為 loadAnswer() 函數,剩下的就是:
RadioButton button = (RadioButton) inflater.inflate(R.layout.answer_item, linearLayout, false);
button.setText(smiley.getName());
button.setTag(R.string.answer_tag, smiley.getCode());
linearLayout.addView(button);
從這個案例中,我了解到我們不能直接將View添加到CardView。 您可以通過在 CardView 中創建 LinearLayout 以在 CardView 中以編程方式添加自定義小部件來實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.