- mongodb - 在 MongoDB mapreduce 中,如何展平值对象?
- javascript - 对象传播与 Object.assign
- html - 输入类型 ="submit"Vs 按钮标签它们可以互换吗?
- sql - 使用 MongoDB 而不是 MS SQL Server 的优缺点
我正在制作一个待办事项列表应用程序,在测试它时,由于某种原因,每当我尝试向下滚动时,项目之间就会形成巨大的差距。每当我拖放项目时总是会发生这种情况,但我的 ItemTouchHelper 适配器和回调类没有看到任何错误。如果你能帮助我,那就太好了。
之前:
之后:
RecyclerAdapter.java
public class RecyclerAdapter extends
RecyclerView.Adapter<RecyclerAdapter.RecyclerVH> implements ItemTouchHelperAdapter{
private LayoutInflater layoutInflater;
ArrayList<Info> data;
Context context;
public RecyclerAdapter(Context context) {
layoutInflater = LayoutInflater.from(context);
this.context = context;
}
public void setData(ArrayList<Info> data) {
this.data = data;
notifyDataSetChanged();
}
@Override
public RecyclerVH onCreateViewHolder(ViewGroup viewGroup, int position) {
View view = layoutInflater.inflate(R.layout.custom_row, viewGroup, false);
view.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Log.d("R.A onClick Owen", "onClick method triggered");
}
});
RecyclerVH recyclerVH = new RecyclerVH(view);
return recyclerVH;
}
@Override
public void onBindViewHolder(RecyclerVH recyclerVH, int position) {
Log.d("RecyclerView", "onBindVH called: " + position);
final Info currentObject = data.get(position);
// Current Info object retrieved for current RecyclerView item - USED FOR DELETE
recyclerVH.listTitle.setText(currentObject.title);
recyclerVH.listContent.setText(currentObject.content);
/*recyclerVH.listTitle.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
// Open new Activity containing note content
Toast.makeText(this, "Opening: " + currentObject.title, Toast.LENGTH_LONG).show();
}
});*/
}
public void deleteItem(int position) {
DBInfo dbInfo = new DBInfo(context);
dbInfo.deleteNote(data.get(position));
// Deletes RV item/position's Info object
data.remove(position);
// Removes Info object at specified position
notifyItemRemoved(position);
// Notifies the RV that item has been removed
}
@Override
public int getItemCount() {
return data.size();
}
// This is where the Swipe and Drag-And-Drog methods come into place
@Override
public boolean onItemMove(int fromPosition, int toPosition) {
// Swapping positions
// ATTEMPT TO UNDERSTAND WHAT IS GOING ON HERE
Collections.swap(data, fromPosition, toPosition);
notifyItemMoved(fromPosition, toPosition);
return true;
}
@Override
public void onItemDismiss(int position) {
// Deleting item from RV and DB
deleteItem(position);
}
class RecyclerVH extends RecyclerView.ViewHolder implements View.OnClickListener{
// OnClickListener is implemented here
// Can also be added at onBindViewHolder above
TextView listTitle, listContent;
public RecyclerVH(View itemView) {
super(itemView);
listTitle = (TextView) itemView.findViewById(R.id.title);
listContent = (TextView) itemView.findViewById(R.id.content);
listTitle.setOnClickListener(this);
}
@Override
public void onClick(View v) {
Toast.makeText(context, "Opening: Note" + getLayoutPosition(), Toast.LENGTH_SHORT).show();
// PS NEVER ADD listTitle VARIABLE AS PUBLIC VARIABLE ABOVE WHICH IS GIVEN VALUE AT ONBINDVH
// THIS IS BECAUSE THE VALUE WILL CHANGE IF ITEM IS ADDED OR DELETED
}
}
}
activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:fab="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity"
android:orientation="vertical"
android:weightSum="1">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:background="@drawable/rounded_corners" />
<FrameLayout
android:layout_width="match_parent"
android:layout_height="match_parent">
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerList"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
<RelativeLayout
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<com.melnykov.fab.FloatingActionButton
android:id="@+id/fab_add"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_alignParentEnd="true"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:layout_marginEnd="16dp"
android:gravity="bottom|end"
android:onClick="addNote"
android:src="@drawable/fab_ic_add"
fab:fab_colorNormal="@color/colorPrimary"
fab:fab_colorPressed="@color/colorPrimaryDark"
fab:fab_colorRipple="@color/colorPrimaryDark" />
</RelativeLayout>
</FrameLayout>
</LinearLayout>
custom_row.xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent">
<LinearLayout
android:id="@+id/main"
android:layout_width="wrap_content"
android:layout_height="wrap_content">
<TextView
android:id="@+id/title"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_gravity="center_vertical"
android:padding="8dp"
android:text="@string/test"
android:textSize="18sp"
android:textStyle="bold" />
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/main"
android:paddingLeft="8dp">
<TextView
android:id="@+id/content"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="@string/test"
android:textSize="15sp" />
</LinearLayout>
</RelativeLayout>
非常感谢任何可以帮助我的人。我一边打字一边拉头发。
编辑:我已经确认问题不是我的 ItemTouchHelper 类。 (尝试在不调用它的情况下运行,问题仍然存在。)此外,似乎当显示对话框并调出键盘时,后台的 RecyclerView 会自行解决问题。删除对话框后,问题再次出现(即滚动会在项目之间放置大量空间)
最佳答案
Luksprog 对 Gabriele Mariotti 的回答有效。
根据doc
With the release 2.3.0 there is an exciting new feature to the LayoutManager API: auto-measurement! This allows a RecyclerView to size itself based on the size of its contents. >This means that previously unavailable scenarios, such as using WRAP_CONTENT >for a dimension of the RecyclerView, are now possible. You’ll find all built in LayoutManagers now support auto-measurement.
由于此更改,请务必仔细检查项目 View 的布局参数:以前忽略的布局参数(例如 MATCH_PARENT滚动方向)现在将得到完全尊重。
在你的项目布局中你必须改变:
android:layout_height="match_parent"
与
android:layout_height="wrap_content"
关于android - 向下滚动时 RecyclerView 项目之间的间隙较大,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35817610/
不确定是间隙还是音频样本未对齐,但是当我将音频文件一分为二时,如下所示: ffmpeg -ss 0 -t 00:00:15.00 -i song.mp3 seg1.mp3 和 ffmpeg -ss 0
我正在使用 NSDrawNinePartImage 绘制自定义按钮/文本字段。我在代码中将图像分割成九个部分,并使用 NSDrawNinePartImage 将其绘制到一个矩形中。 不幸的是,我在绘图
Check this image for the progressbar 知道如何消除 ProgressBar 下的那个小间隙吗?我怎样才能做到没有差距?应该通过 MainActivity 中的 ja
刚开始制作网站时,整个左侧都有几个像素的边距,但我不明白为什么。 http://jsbin.com/elufob/1/ 任何建议将不胜感激 CSS html{ min-width: 1
我一直在尝试在我的网站上使用静态图像,但页眉和图像之间存在很大差距,我尝试在 Photoshop 和 HTML 中删除填充并更改图像高度。这是我的问题的 fiddle https://jsfiddle
我前一段时间遇到过这个问题,忘记了解决方案是什么。我的文档顶部有一个小间隙,大概 5/10 像素? 我想你会知道我在说什么,我该如何摆脱它? 谢谢 最佳答案 在您的 CSS 文件中添加: html,
刚开始制作网站时,整个左侧都有几个像素的边距,但我不明白为什么。 http://jsbin.com/elufob/1/ 任何建议将不胜感激 CSS html{ min-width: 1
我正在尝试使用 Accordion MUI 组件在展开模式下不会移动,也不会对某些元素应用顶部和底部边距。 示例如下,但它不起作用,我的组件仍然太“跳跃”(扩展时它会增加宽度,并且添加了一些不可见的边
我有一个自定义 UITableViewCell Card 样式的动态高度,它的空间在应用程序中是恒定的。我正在使用 Storyboard ,并且在 UINavigationBar 下方有 UITool
假设您有一组日期范围 var arr = [ { "from": 'unix 1st of august', "until": 'unix 5th of august' },
我是radial-gradient的新手,我不知道这些多维数据集之间的背线或空格是什么?如何删除它们? * {margin: 0; outline: 0; border: 0;} .round {
我对 VBA 中的 HTML 正文有疑问。我创建了一封电子邮件并使用 HTML 填写信息。 我的问题描述如下: Reduce Gap between HTML and elements 但是我不能
我正在阅读 Lea Verou 的《CSS secret 》一书。 有一个圆 Angular 径向多重渐变的例子: http://dabblet.com/gist/24484257bc6cf7076a
我一直在为一个客户做一个元素,一切都很顺利,直到我注意到我的 h1/h2/h3(任何标题标签)已经向右移动了 2/3 像素。他们可能一直都在这样做,但我只是刚刚注意到。当您在 devtools 中突出
这里是 CSS 新手。奇怪的事情发生了,链接之间有间隙,我不知道为什么。 我正在使用 html html5 样板 css 进行重置。 HTML代码: Link 1 Link
这个问题在这里已经有了答案: margin on h1 element inside a div (3 个答案) 关闭 6 年前。 我有一个问题,我的 h1 标签与我的页面顶部分开 - 像这样:en
我希望我的文本在事件时带有下划线,但当我这样做时它看起来像这样: 我只希望文本有下划线,如果我使用 text-decoration:underline 它会在单词下划线,但我不知道如何在文本和下划线之
我似乎无法将这两张图片放在一起。它们都在 HTML 表格中自己的行中(我正在制作一封 html 电子邮件),但我似乎无法删除它们之间的 5px。 这是我的代码 它也在 jsfi
我正在尝试在我的项目中使用新的 CardView UI 小部件,但在某些运行 android 2.3 的设备上,CardView 角之间存在间隙(见下文)。 这是在我的 xml 文件中:
我想了解并学习当我使用共享边框填充两个形状/路径时遇到的问题的解决方案,即在为所有形状调用填充后,仍然有一个微小的间隙存在于他们之间。 该代码片段展示了绘制所涉及的形状/路径的代码: ctx.begi
我是一名优秀的程序员,十分优秀!