不知何故,我似乎无法找到一个理由,我的片段与我期望他们采取的行动有很多不同。
我想要完成的事情:
我得到了什么:
我的问题 - 如何在这里实现目标 - 在我的情况下,使用我的数据库示例中的文本将几个蓝色方块彼此相邻。
XML:
activity_main
rec_item
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_margin="4dp">
<ImageView
android:id="@+id/category_image"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:adjustViewBounds="true"
android:contentDescription="@null"
android:scaleType="centerCrop"
android:background="#b7b7ff"/>
<TextView
android:id="@+id/name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="bottom"
android:minHeight="48dp"
android:paddingBottom="16dp"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
android:background="#E237474F"
style="@style/TextAppearance.AppCompat.Subhead.Inverse"
tools:text="TEST"/>
</FrameLayout>
rec_list
<android.support.v7.widget.RecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/recycler_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"/>
答案 0 :(得分:0)
将cursor.getString(0)
更改为cursor.getString(cursor.getColumnIndex("name"));
您假设name
是光标中的第0列,并且可能不是 - _id
似乎是第0列。以上是获取某列的值的正确方法。 (或者,如果您只从表中select name
,或者如select name, _id, ...
中那样明确地对列进行排序,那么您现有的代码也可以使用。)
通过此更改,您应该看到类别名称,尽管您将有许多重复项,因为每次创建MainActivity
时,它都会在表中再插入四行。由于name
列上没有uniqueness constraint,SQLite很乐意再次在新行中插入这些名称。
最后,您的ImageView
还没有源图像,并且您没有给它明确的尺寸,所以我怀疑它的宽度和高度都是零。鉴于你想要制作一个网格,match_parent
似乎是错误的东西,无论如何都要用于项目布局的根元素(至少对于高度)。您可以考虑使用PercentFrameLayout
作为项目布局的根目录,以便指定宽高比。