小编Kar*_*pka的帖子

RecyclerView:检测到不一致.商品位置无效

我们的QA检测到一个错误:当旋转Android设备(Droid Turbo)时,发生以下与RecyclerView相关的崩溃:

java.lang.IndexOutOfBoundsException:检测到不一致.无效的项目位置2(偏移量:2).state:3

对我来说,它看起来像RecyclerView内部的一个内部错误,因为我无法想到这是由我们的代码直接导致的任何方式......

有谁遇到过这个问题?

什么是解决方案?

一个残酷的解决方法可能是在发生异常时捕获异常并从头开始重新创建RecyclverView实例,以避免陷入损坏状态.

但是,如果可能的话,我想更好地理解这个问题(并且可能在其源头修复它),而不是掩盖它.

这个bug很难重现,但是当它发生时它是致命的.

完整的堆栈跟踪:

W/dalvikvm(7546):threadid = 1:线程退出,未捕获异常(组= 0x41987d40)E/AndroidRuntime(7546):致命异常:主E/AndroidRuntime(7546):进程:com.oblong.mezzedroid,PID:7546 E/AndroidRuntime(7546):java.lang.IndexOutOfBoundsException:检测到不一致.无效的项目位置2(偏移量:2).state:3 E/AndroidRuntime(7546):在android.support.v7.widget.RecyclerView $ Recycler.getViewForPosition(RecyclerView.java:3382)E/AndroidRuntime(7546):at android .support.v7.widget.RecyclerView $ Recycler.getViewForPosition(RecyclerView.java:3340)E/AndroidRuntime(7546):at android.support.v7.widget.LinearLayoutManager $ LayoutState.next(LinearLayoutManager.java:1810)E/AndroidRuntime (7546):在android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1306)E/AndroidRuntime(7546):在android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1269)E/AndroidRuntime(7546):在android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:523)E/AndroidRuntime(7546):at org.liboid.recycler_view.RecyclerViewContainer $ LiLinearLayoutManager.onLayoutChildren(RecyclerViewContainer.java:179 )E/AndroidRuntime(7546):在android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:1942))E/AndroidRuntime(7546):在android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:2237)E/AndroidRuntime(7546):at org.liboid.recycler_view.LiRecyclerView.onLayout(LiRecyclerView.java:30) )E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546) ):在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)E/AndroidRuntime(7546):在android.widget.FrameLayout.onLayout(FrameLayout.java:388)E/AndroidRuntime(7546):在android.view .View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.FrameLayout.layoutChildren(FrameLayout) .java:453)E/AndroidRuntime(7546):在android.widget.FrameLayout.onLayout(FrameLayout.java:388)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)E/AndroidRuntime(7546):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)E/AndroidRuntime( 7546):在android.widget.LinearLayout.onLayout(LinearLayout.java:1434)E/AndroidRuntime(7546):at com.oblong.mezzedroid.workspace.content.bins.BinsContainerLayout.onLayout(BinsContainerLayout.java:22)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)E/AndroidRuntime(7546):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)E/AndroidRuntime(7546):在android.widget.LinearLayout. onLayout(LinearLayout.java:1434)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java: 4651)E/Android 运行时(7546):在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)E/AndroidRuntime(7546):在android.widget.FrameLayout.onLayout(FrameLayout.java:388)E/AndroidRuntime(7546):at android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.FrameLayout. layoutChildren(FrameLayout.java:453)E/AndroidRuntime(7546):在android.widget.FrameLayout.onLayout(FrameLayout.java:388)E/AndroidRuntime(7546):在android.view.View.layout(View.java: 14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)E/AndroidRuntime( 7546):在android.widget.LinearLayout.layoutVertical(LinearLayout.java:1525)E/AndroidRuntime(7546):在android.widget.LinearLayout.onLayout(LinearLayout.java:1434)E/AndroidRuntime(7546):在android. view.View.layout(View.java:14946)E/Andro idRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)E/AndroidRuntime(7546):at android.widget.FrameLayout.onLayout(FrameLayout.java:388)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup. layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.LinearLayout.setChildFrame(LinearLayout.java:1671)E/AndroidRuntime(7546):在android.widget.LinearLayout.layoutVertical(LinearLayout.java: 1525)E/AndroidRuntime(7546):在android.widget.LinearLayout.onLayout(LinearLayout.java:1434)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime( 7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime(7546):在android.widget.FrameLayout.layoutChildren(FrameLayout.java:453)E/AndroidRuntime(7546):在android. widget.FrameLayout.onLayout(FrameLayout.java:3 88)E/AndroidRuntime(7546):在android.view.View.layout(View.java:14946)E/AndroidRuntime(7546):在android.view.ViewGroup.layout(ViewGroup.java:4651)E/AndroidRuntime( 7546):在android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2132)E/AndroidRuntime(7546):在android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:1872)E/AndroidRuntime(7546):at andro

android android-layout screen-rotation android-recyclerview

240
推荐指数
13
解决办法
10万
查看次数

Intellij为方法和类生成javadoc

是否可以设置Intellij自动生成方法和类的javadoc,使用@author和@since date?
我在Eclipse中有这个功能.
我知道,文件有模板,我也可以手动半自动地将javadoc添加到选定的方法/类.但我希望生成对于每个生成的方法/类/枚举/接口/字段等是自动的.
这对于例如"提取方法","覆盖/实现","创建getter/setter"等有用.
这将节省数百手动操作
我正在使用IntelliJ Idea 9.0 BETA社区版,#IC-90.96.
TIA.

java javadoc intellij-idea auto-generate

43
推荐指数
4
解决办法
6万
查看次数

适用于Windows,Linux,MacOS X的跨平台脚​​本

我正在为Windows,Linux,MacOS X寻找跨平台脚本(语言).我厌倦了.bat/bash.

我想做一些事情,例如,锁定工作站''在自动登录(我在X-Window中有这个,但解决方案非常难看;现在,我希望在MS Windows上,而不是那个丑陋:-)) .
通常:自动执行任务.

或者我会更好地使用Windows Scripting Host?
PowerShell也浮现在脑海中,但对于我来说,这似乎只适用于Windows.像Python,Ruby,(Java?)这样的语言能与WSH交互(优雅吗?)?

作为图片的一部分,还会想到DBUS,DCOM等等.

目前我使用Java,.bat,bash,Ruby,Scala的混合物; 一些VBA for Excel.有时会变得非常丑陋.

我想要一个跨平台的通用解决方案/使用,本机''部分接近特定于操作系统.比如像Ruby驱动一些特定于Windows的东西(只是一个猜测).
你用什么?
TIA

linux windows scripting multiplatform

42
推荐指数
5
解决办法
3万
查看次数

将命令行参数传递给javaws(Java WebStart)可执行文件

那些可能不想读那么多的人的摘要:

我该怎么做呢: ?如果我们可以将ad-hoc命令行参数传递给javaws,那么javaws应用程序可能更像"一等公民""普通应用程序".例如,我们可以传递要打开的文件的文件名.

我想知道是否有办法将"ad-hoc"命令行参数传递给javaws可执行文件.我已经知道如何在JNLP文件中指定它们:

<application-desc main-class="org.example.ClassName">
<argument>...
Run Code Online (Sandbox Code Playgroud)

虽然这可以用于我想要完成的任务,但我将此视为一种解决方法.我试过了

javaws http://example.org/launch.jnlp <some CLI args here>
Run Code Online (Sandbox Code Playgroud)

但我认为,"这里的一些CLI args"被忽略了.

如果我们可以将ad-hoc命令行参数传递给javaws,那么javaws应用程序可能更像"一等公民""普通应用程序".例如,我们可以传递要打开的文件的文件名.比如说

javaws [options] http://example.org/launch.jnlp my_file.jpg
Run Code Online (Sandbox Code Playgroud)

在JNLP中使用硬编码的参数不满足此用例.

java command-line java-web-start

12
推荐指数
1
解决办法
3万
查看次数

在TypeScript中,是否存在将字段声明为惰性的语法?

在TypeScript中,是否存在将字段声明为延迟初始化的语法?

就像在Scala中一样,例如:__CODE__.

这意味着,字段初始值设定项仅在首次访问字段时运行.

lazy-initialization typescript

12
推荐指数
3
解决办法
4567
查看次数

如何在angular2(material2)中设置小吃店的持续时间

此示例永远保留在屏幕上:

小吃店,demo.ts

import {Component, ViewContainerRef} from '@angular/core';
import {MdSnackBar, MdSnackBarConfig} from '@angular/material';

@Component({
  moduleId: module.id,
  selector: 'snack-bar-demo',
  templateUrl: 'snack-bar-demo.html',
})
export class SnackBarDemo {
  message: string = 'Snack Bar opened.';
  actionButtonLabel: string = 'Retry';
  action: boolean = false;

  constructor(
      public snackBar: MdSnackBar,
      public viewContainerRef: ViewContainerRef) { }

  open() {
    let config = new MdSnackBarConfig(this.viewContainerRef);
    this.snackBar.open(this.message, this.action && this.actionButtonLabel, config);
  }
}
Run Code Online (Sandbox Code Playgroud)

如何让它在2秒后消失(以某种方式设置持续时间/超时)?

material-design snackbar angular-material2 angular2-material angular

11
推荐指数
3
解决办法
4467
查看次数

边界框中的itext多行文本

有没有人知道,如何在iText中,在边界框中添加多行文字(指定坐标).

我试过了

cb.showTextAligned(
    PdfContentByte.ALIGN_LEFT,
    text,
    bounds.getLeft(),
    TOTAL_HEIGHT-bounds.getTop(),
    0 );
Run Code Online (Sandbox Code Playgroud)

但它不支持换行.我也试过了

PdfContentByte cb = writer.getDirectContent();
cb.moveText(300,400);
document.add(new Paragraph("TEST paragraph\nNewline"));
Run Code Online (Sandbox Code Playgroud)

这支持换行但不对moveText作出反应,因此我不知道如何将它放在给定位置或更好:边界框.

我怀疑chunks或PdfTemplate或者表可能会有所帮助,但我(还)不知道如何把它放在一起.TIA寻求帮助.

java text position itext multiline

10
推荐指数
1
解决办法
2万
查看次数

Observable.zip不是一个函数

VM95422:27 ORIGINAL EXCEPTION: WEBPACK_IMPORTED_MODULE_3_rxjs_Observable .Observable.zip不是函数

试过各种进口

// import 'rxjs/add/operator/zip';
// import 'rxjs/add/observable/zip-static';
// import 'rxjs/add/operator/zip';
import 'rxjs/operator/zip';
Run Code Online (Sandbox Code Playgroud)

试着像这样使用它:

const zippedUsers: Observable<User[]> = Observable.zip<User>(this.usersObservable);
Run Code Online (Sandbox Code Playgroud)

Angular 4,TypeScript 2.1.6

的package.json:

"rxjs": "^5.1.0",
Run Code Online (Sandbox Code Playgroud)

rxjs typescript typescript2.1 angular

10
推荐指数
3
解决办法
8667
查看次数

Angular 2+优雅的拦截Command + S的方式

尝试为Command + S实现快捷键组合以保存表单.

我已经读过这个 - https://angular.io/guide/user-input,但它没有说任何关于元或命令的内容.

尝试围绕表格:

<div
  (keyup.command.s)="save()"
  (keyup.command.u)="save()"
  (keyup.control.u)="save()"
  (keyup.control.s)="save()"
  (keyup.meta.u)="save()"
>
Run Code Online (Sandbox Code Playgroud)

其中,只有control.ucontrol.s工作.

凭借Angular 2+的所有强大功能和跨浏览器功能,我希望以某种方式以优雅的方式处理,使用(keyup...).

肯定很多Angular Devs都使用Macs :).

我还读过如何通过JavaScript捕获Mac的命令键?http://unixpapa.com/js/key.html但仍然希望Angular优雅的解决方案,而不是与浏览器特定的东西打架......

javascript keyboard-shortcuts cross-browser onkeyup angular

10
推荐指数
2
解决办法
2121
查看次数

Firebase Android:使用许多侦听器缓慢"加入",似乎与文档相矛盾

实施一个Android +火力地堡的应用程序,其具有多对多的关系:用户< - >窗口小部件(窗口小部件可被共享的多个用户).

注意事项:

  1. 列出用户拥有的所有小部件.
  2. 用户只能看到与他/她共享的小部件.
  3. 能够看到共享给定Widget的所有用户.
  4. 单个Widget可以由具有相同权限的多个用户拥有/管理(修改Widget并更改共享对象).与Google云端硬盘与特定用户共享的方式类似.

实现提取(join-style)的方法之一是遵循以下建议:https://www.firebase.com/docs/android/guide/structuring-data.html(" Joining Flattened Data"):

// fetch a list of Mary's groups
ref.child("users/mchen/groups").addChildEventListener(new ChildEventListener() {
  @Override
  public void onChildAdded(DataSnapshot snapshot, String previousChildKey) {
    // for each group, fetch the name and print it
    String groupKey = snapshot.getKey();
    ref.child("groups/" + groupKey + "/name").addListenerForSingleValueEvent(new ValueEventListener() {
      @Override
      public void onDataChange(DataSnapshot snapshot) {
        System.out.println("Mary is a member of this group: " + snapshot.getValue());
      }
      @Override
      public void onCancelled(FirebaseError firebaseError) { …
Run Code Online (Sandbox Code Playgroud)

android join database-performance firebase firebase-realtime-database

7
推荐指数
1
解决办法
889
查看次数