如何在livedata观察器中向cardview添加视图

问题描述 投票:0回答:1

我正在尝试在名片视图中添加一些单选按钮。这是我的代码:

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();
}

AnswerView

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方法为止。但是,当我在设备上查看时,根本没有“扩展”视图,在这种情况下,根本没有单选按钮。

java android layout view
1个回答
0
投票

因此,我通过在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内以编程方式添加自定义小部件来实现此目的。

© www.soinside.com 2019 - 2024. All rights reserved.