Java 如何在livedata observer中向cardview添加视图

Java 如何在livedata observer中向cardview添加视图,java,android,layout,view,Java,Android,Layout,View,我试图在卡片视图中添加一些单选按钮。这是我的密码: MainActivity.java cardView = findViewById(R.id.card_view); mGameViewModel.setUpGame().observe(this,this::loadRound); private void loadRound(List<Smiley> smileys) { if (smileys == null) { return; }

我试图在卡片视图中添加一些单选按钮。这是我的密码:

MainActivity.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();
}
cardwiew=findviewbyd(R.id.card\u视图);
mGameViewModel.setUpGame().observe(this,this::loadRound);
专用void loadRound(列出smileys){
if(smileys==null){
返回;
}
mAnswersView.loadAnswers(微笑、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);
    }
}
public void loadAnswers(列表笑脸、卡片视图、卡片视图){
if(smileys==null){
返回;
}
移除所有视图();
LayoutInflater充气器=LayoutInflater.from(getContext());
for(Smiley Smiley:smileys){
RadioButton button=(RadioButton)充气机。充气(R.layout.answer_项,此项为假);
setText(smiley.getName());
setTag(R.string.answer_标记,smiley.getCode());
cardView.addView(按钮);
}
}
但这似乎不起作用。有什么想法吗

编辑:
这里的问题是,我尝试创建的单选按钮没有显示。我已经做了一些调试,所有的方法都被调用,直到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);

从这个案例中,我了解到我们不能直接将视图添加到CardView。您可以通过在CardView中创建线性布局来在CardView中以编程方式添加自定义小部件来完成此操作。

在此处传递“CardView”而不是“this”,然后尝试:充气器。充气(R.layout.answer\u项,CardView,false);还是一样:(解释发生了什么。它是崩溃了吗?还是屏幕上什么也没有发生?然后,添加日志或进行调试并检查是否调用loadRound。检查收到的列表笑脸的大小。将您的layout R.layout.answer_项放在示例活动中,并检查它是否正确。我已编辑我的帖子谢谢您检查您是否使用了layout R.layout.answ。)er_项作为活动的布局,如果它显示单选按钮。如果没有,则问题出在您的布局中。