片段在我的回收站视图中表现得很奇怪

Posted

技术标签:

【中文标题】片段在我的回收站视图中表现得很奇怪【英文标题】:Fragment is acting weird in my recyclerview 【发布时间】:2017-04-04 03:27:48 【问题描述】:

不知何故,我似乎找不到原因,我的片段的行为与我预期的不同。

我想要完成的事情:

我在自动取款机上得到什么:

我的问题 - 我怎样才能在这里达到目标 - 在我的情况下,我的数据库示例中的文本与几个蓝色方块相邻。

XML:

activity_main

rec_item

<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_
android:layout_
android:layout_margin="4dp">

<ImageView
    android:id="@+id/category_image"
    android:layout_
    android:layout_
    android:adjustViewBounds="true"
    android:contentDescription="@null"
    android:scaleType="centerCrop"
    android:background="#b7b7ff"/>

<TextView
    android:id="@+id/name"
    android:layout_
    android:layout_
    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_
android:layout_
android:orientation="vertical"/>

【问题讨论】:

【参考方案1】:

cursor.getString(0) 更改为cursor.getString(cursor.getColumnIndex("name"));

您假设name 是光标中的第零列,它可能不是--_id 似乎是第零列。以上是获取特定列的值的正确方法。 (或者,如果您只在表中使用select name,或者如果您像select name, _id, ... 那样明确地对列进行排序,那么您现有的代码也可以工作。)

通过此更改,您应该会看到类别名称,尽管您将有许多重复项,因为每次创建 MainActivity 时,它都会在表中再插入四行。由于name 列上没有任何uniqueness constraint,SQLite 很乐意在新行中再次插入这些名称。

最后,你的ImageView 还没有源图像,而且你还没有给它明确的尺寸,所以我怀疑它的宽度和高度都为零。鉴于您想制作一个网格,match_parent 似乎无论如何都不适用于项目布局的根元素(至少对于高度而言)。您可以考虑使用 PercentFrameLayout 作为项目布局的根,以便您可以指定纵横比。

【讨论】:

1.如何跳过重复项?我尝试使用“name TEXT unique”,但我仍然看到它们。 2.不知道添加''src''会在界面上产生这样的差异。现在我得到了 - img.exs.lv/e/z/ezeliitis/Screenshot_2016-11-20-23-06-14.png,但我仍然需要在每张图片周围添加一个填充?我尝试使用 PercentFrameLayout,但它没有给我任何成功。 @ThingsILove1996 如果更改了create table sql 语句,则需要删除现有数据库(以便创建新数据库)或执行数据库版本升级。更改 java 代码中的create table sql 不会影响已存储的任何数据。 Karakuri - 谢谢。 2. 在每个片段周围获得一些填充呢?我应该如何处理它? @ThingsILove1996 在您的项目布局中添加填充,或使用不绘制任何内容的 ItemDecoration。

以上是关于片段在我的回收站视图中表现得很奇怪的主要内容,如果未能解决你的问题,请参考以下文章

EditText表现得很奇怪

在片段内使用回收器视图时出错

RecyclerView 项目中的片段替换

如何在 Recyclerview Item Click 上打开新片段?

回收站视图未显示在片段中

回收站视图仅在我从房间数据库中删除后重新打开活动时更新