片段在我的recyclerview中表现得很奇怪

时间:2016-11-20 19:11:29

标签: android android-layout android-fragments android-recyclerview

不知何故,我似乎无法找到一个理由,我的片段与我期望他们采取的行动有很多不同。

我想要完成的事情:

what I want to accomplish

我得到了什么:

what I get atm

我的问题 - 如何在这里实现目标 - 在我的情况下,使用我的数据库示例中的文本将几个蓝色方块彼此相邻。

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"/>

1 个答案:

答案 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作为项目布局的根目录,以便指定宽高比。