簡體   English   中英

如何在livedata觀察者中向cardview添加視圖

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM