如何使用android数据绑定来填充列表?

wnvonmuf  于 2021-07-03  发布在  Java
关注(0)|答案(0)|浏览(269)

我可以把pojo从我的orm(柜子)中拿出来,但是我不知道如何编写xml来绑定到这样一个列表。除了在listview或recyclerview中非常简短地提到使用它们之外,所有的例子都是单数的。因此,我尝试在一个xml文件中使用一个单一的绑定,为每个项目再次“膨胀”。代码如下:

private void listThings() {

  LinearLayout gList = (LinearLayout) findViewById(R.id.thingList);
  gList.removeAllViews();

  SQLiteDatabase db = new CGDatabaseHandler(gList.getContext()).getReadableDatabase();
  DatabaseCompartment dbc = cupboard().withDatabase(db);

  QueryResultIterable<Thing> itr = null;
  try {
    itr = dbc.query(Thing.class).query();

    for (Thing thing : itr) {
      // use data binding to create a UI widget for each
      LayoutInflater inflater = (LayoutInflater) getBaseContext()
          .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
      ThingDocumentLabelBinding binding = DataBindingUtil.inflate(inflater,
          R.layout.thing_document_label, gList, false);
      binding.setThing(thing);
      // 
      gList.addView(binding.getRoot());
    }
  } finally {
    // close the cursor
    if (itr != null)
      itr.close();
  }
}

我知道这使用的是线性布局,而不是listview或recyclerview。有什么区别?我根本无法在列表视图中显示任何内容。listview似乎也不支持用removeallviews清除列表。下面是thing\u document\u label.xml文件的xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

  <data>
    <variable
        name="thing"
        type="com.example.Thing"/>
  </data>

  <TextView android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:paddingBottom="20dp"
            android:paddingTop="20dp"
            android:text="@{@string/thing_document_label(thing.gName, thing.dstName, thing.property3)}"
      >

  </TextView>
</layout>

我得到的是一个文本视图显示在我的线性布局。我应该看到他们中的六个。在我开始做数据绑定之前,他们就出现了。我刚刚对textview进行了子类化,并在这里显示的相同循环中示例化了它们。这很好,但我在这个应用程序的开始阶段,我想标准化的数据绑定,如果可能的话。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题