Android:以编程方式创建ClerView不起作用

58wvjzkj  于 12个月前  发布在  Android
关注(0)|答案(2)|浏览(120)

我在xml中有一个类似于这样的数据库视图:

<LinearLayout
    android:id="@+id/llTestMenuMain"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:background="@drawable/gradient"
    android:orientation="vertical">

    <androidx.recyclerview.widget.RecyclerView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:visibility="gone"
        android:id="@+id/rv" />

</LinearLayout>

字符串
并使用它来显示一个动态的按钮列表,如下所示:

int buttonFontSize = 20;
RecyclerView rv = findViewById(R.id.rv);

LinearLayoutManager llm = new LinearLayoutManager(this);
rv.setLayoutManager(llm);
adapter = new RVAdapter_ButtonList(tests, null, this, buttonFontSize);
rv.setAdapter(adapter);
rv.setVisibility(View.VISIBLE);


一切都很好,但现在所有垂直显示的按钮都将水平显示并按类别分组,因此我需要动态创建一个按钮视图,我从一个简单的例子开始,只有一个下一个方法没有成功,因为一个空白屏幕显示:

int buttonFontSize = 20;

RecyclerView rv = new RecyclerView(this);
RecyclerView.LayoutParams params = new
                RecyclerView.LayoutParams(
                RecyclerView.LayoutParams.MATCH_PARENT,
                RecyclerView.LayoutParams.WRAP_CONTENT
        );
rv.setLayoutParams(params);

LinearLayout llTestMenuMain = findViewById(R.id.llTestMenuMain);
llTestMenuMain.addView(rv);

LinearLayoutManager llm = new LinearLayoutManager(this);rv.setLayoutManager(llm);
adapter = new RVAdapter_ButtonList(tests, null, this, buttonFontSize);
rv.setAdapter(adapter);
rv.setVisibility(View.VISIBLE);


任何帮助,为什么我不能使动态创建的MaplerView工作将不胜感激。
编辑1:
我不知道它是否有任何帮助,但注意到动态创建RV适配器“onBindViewHolder”从未被调用(当然,itemCount > 0),当RV在XML中创建时会调用。无法找到解决方案...:(
编辑二:
还试图

runOnUiThread(new Runnable() {
            @Override
            public void run() {
                adapter.notifyDataSetChanged();
            }
        });


以防万一,也无济于事。

o4hqfura

o4hqfura1#

尝试将您的代码替换为以下代码:

int buttonFontSize = 20;

LinearLayout llTestMenuMain = findViewById(R.id.llTestMenuMain);

RecyclerView rv = new RecyclerView(this);
RecyclerView.LayoutParams params = new
                RecyclerView.LayoutParams(
                RecyclerView.LayoutParams.MATCH_PARENT,
                RecyclerView.LayoutParams.WRAP_CONTENT
        );
rv.setLayoutParams(params);
    
LinearLayoutManager llm = new LinearLayoutManager(this);
adapter = new RVAdapter_ButtonList(tests, null, this, buttonFontSize);
rv.setAdapter(adapter);
rv.setLayoutManager(llm);
rv.setVisibility(View.VISIBLE);

llTestMenuMain.addView(rv);

字符串

o7jaxewo

o7jaxewo2#

我发现,将以编程方式创建的ScrollView放在ScrollView中,可以“神奇地”看到它。

相关问题