刚看了一下新的Android支持设计库的演示应用程序.它由Chris Banes在github上提供.通过应用程序,CoordinatorLayout使用沉重.此外,许多支持设计库类如FloatingActionButton,SnackBar,AppBarLayout等行为有所内使用时CoordinatorLayout.
有人可以CoordinatorLayout说明一下它是什么以及它与ViewGroupandroid中的其他s 有何不同,或者至少提供正确的学习途径CoordinatorLayout.
android android-support-library android-design-library android-coordinatorlayout
我正在使用RecyclerView显示项目的名称.我的行包含单行TextView.项目名称存储在List<String> mItemList.
要更改内容RecyclerView,我替换字符串mItemList并调用notifyDataSetChanged()RecyclerViewAdapter.
但是如果我尝试更改mItemListRecyclerView滚动时的内容,有时它会给我
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 157(offset:157).state:588
如果尺寸mItemList小于之前,就会发生这种情况.那么改变内容的正确方法是RecyclerView什么?这是一个错误RecyclerView吗?
这是Exception的完整堆栈跟踪:
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid item position 157(offset:157).state:588
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3300)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:3258)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:1803)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1302)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1265)
at android.support.v7.widget.LinearLayoutManager.scrollBy(LinearLayoutManager.java:1093)
at android.support.v7.widget.LinearLayoutManager.scrollVerticallyBy(LinearLayoutManager.java:956)
at android.support.v7.widget.RecyclerView$ViewFlinger.run(RecyclerView.java:2715)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:725)
at android.view.Choreographer.doCallbacks(Choreographer.java:555)
at android.view.Choreographer.doFrame(Choreographer.java:524)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:711)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4921)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at …Run Code Online (Sandbox Code Playgroud) 我在使用Android Studio 2.0预览版5和gradle插件1.5.0的项目中遇到以下错误.即使是干净的项目也会引发同样的错误.
EtaskArtifacts.bin .gradle/2.11/taskArtifacts/taskArtifacts.bin).> rror:无法从缓存taskArtifacts.bin(/PROJECT_PATH/.gradle/2.10/taskArtifacts/taskArtifacts.bin)中读取条目':app:processDebugManifest'.
类com.android.manifmerger.ManifestMerger2中不存在枚举常量INSTANT_RUN_REPLACEMENT $ Invoker $ Feature
我注意到android:singleLine="true",如果在ListView中的Listitem的TextView中使用,则滚动非常滞后.虽然我已经找到了另一种选择 android:maxLines="1",但我很好奇知道为什么android:singleLine="true"滚动非常滞后,即使它有点滞后,为什么android仍然使用它?
我正在尝试定义圆形drawable,它需要材质主题的原色.这是我的xml代码:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="oval" >
<solid android:color="?attr/colorPrimary"></solid>
</shape>
Run Code Online (Sandbox Code Playgroud)
但我得到了InflateException.我已经读过,我们不能在drawable xml中使用属性.那么任何解决方法呢?
假设我有一组用户名
let users = ["Hello", "1212", "12", "Bob", "Rob"]
Run Code Online (Sandbox Code Playgroud)
我想得到名字长度为2的第一个用户,所以我过滤了数组并获得了第一个用户
if let selected = users.filter{$0.characters.count == 2}.first {
print(selected)
}
Run Code Online (Sandbox Code Playgroud)
此代码在swift 2.2下抛出了编译错误
Consecutive statements on a line must be separated by ';'
但是,这工作正常
let selected = users.filter{$0.characters.count == 2}.first
if let selected = selected {
print(selected)
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以解释为什么我需要先将过滤结果存储在一个单独的变量中?任何帮助将非常感激.