小编Mr-*_*IDE的帖子

Android RecyclerView:notifyDataSetChanged()IllegalStateException

我正在尝试使用notifyDataSetChanged()更新recycleview的项目.

这是我在recycleview适配器中的onBindViewHolder()方法.

@Override
public void onBindViewHolder(ViewHolder viewHolder, int position) {

     //checkbox view listener
    viewHolder.getCheckbox().setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

            //update list items
            notifyDataSetChanged();
        }
    });
}
Run Code Online (Sandbox Code Playgroud)

我选中一个复选框后,我想要做的是更新列表项.我得到了一个非法的例外:"Cannot call this method while RecyclerView is computing a layout or scrolling"

java.lang.IllegalStateException: Cannot call this method while RecyclerView is computing a layout or scrolling
    at android.support.v7.widget.RecyclerView.assertNotInLayoutOrScroll(RecyclerView.java:1462)
    at android.support.v7.widget.RecyclerView$RecyclerViewDataObserver.onChanged(RecyclerView.java:2982)
    at android.support.v7.widget.RecyclerView$AdapterDataObservable.notifyChanged(RecyclerView.java:7493)
    at android.support.v7.widget.RecyclerView$Adapter.notifyDataSetChanged(RecyclerView.java:4338)
    at com.app.myapp.screens.RecycleAdapter.onRowSelect(RecycleAdapter.java:111)
Run Code Online (Sandbox Code Playgroud)

我也使用了notifyItemChanged(),同样的例外.任何秘密的更新方式,以通知适配器的东西发生了变化?

android android-recyclerview

128
推荐指数
10
解决办法
8万
查看次数

如何使用不同的意图启动活动时,如何防止活动的多个实例

当我使用Android市场上的"打开"按钮启动时,我在应用程序中遇到了一个错误.似乎从市场上推出它会使用不同的意图,然后从手机的应用程序菜单中启动它.这导致启动相同活动的多个副本,这些副本彼此冲突.

例如,如果我的应用程序包含ABC活动,则上述问题可能会导致堆栈ABCA.

我尝试使用Intent所有活动来解决这个问题,但每当我点击HOME时,它都会产生不必要的副作用,即将活动堆栈清除为root.

示例: ABC - > HOME - > A当我需要的是ABC - > HOME - > ABC

在使用HOME时,是否有一种防止启动相同类型的多个活动而不重置根活动的好方法?

android activity-stack google-play back-stack

116
推荐指数
3
解决办法
7万
查看次数

在Android Studio和Gradle中使用ViewPagerIndicator库

我正在尝试使用Jake Wharton的ViewPagerIndicator库,但是我无法在Android Studio中使用我的Gradle项目.

我将其添加为依赖项,如下所示:

    dependencies {
       // ... other ommitted
       compile 'com.viewpagerindicator:library:2.4.1'
       compile 'com.android.support:support-v4:19.0.1'
       compile 'com.nineoldandroids:library:2.4.0'
       // ...
    }
Run Code Online (Sandbox Code Playgroud)

但该项目似乎无法识别库中的任何组件.我想知道不同的support-v4版本是否存在依赖性问题,或者是九折机器人的某些东西......?

android gradle viewpagerindicator android-studio

115
推荐指数
7
解决办法
9万
查看次数

使用占位符和替换对象格式化JavaScript字符串?

我有一个字符串说: My Name is %NAME% and my age is %AGE%.

%XXX%是占位符.我们需要从对象替换值.

对象看起来像: {"%NAME%":"Mike","%AGE%":"26","%EVENT%":"20"}

我需要解析对象并用相应的值替换字符串.所以最终输出将是:

我的名字是迈克,我的年龄是26岁.

整个过程必须使用纯javascript或jquery完成.

javascript string jquery string-formatting

71
推荐指数
8
解决办法
9万
查看次数

在23.2.0之后具有大空白空间的RecyclerView项目

更新到v23.2.0之后,我的RecyclerView项目之间有巨大的空白垂直空间.

我的项目布局非常简单:

 <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
       android:layout_width="match_parent"
       android:layout_height="match_parent"                                    
       android:orientation="vertical" >
Run Code Online (Sandbox Code Playgroud)

android android-support-library android-recyclerview

43
推荐指数
3
解决办法
2万
查看次数

如何点击Espresso中RecyclerView内的项目

我有一个RecyclerView(R.id.recyclerView),其中每一行都有一个图像(R.id.row_image)和一个TextView.我想点击第一行中的图片.
我试过使用onData(..)但似乎没有用.

android android-espresso android-recyclerview

37
推荐指数
4
解决办法
3万
查看次数

使用JavaScript通过自定义属性获取元素

我有一个XHTML页面,其中每个HTML元素都有一个唯一的自定义属性,如下所示:

<div class="logo" tokenid="14"></div>
Run Code Online (Sandbox Code Playgroud)

我需要一种方法来通过ID找到这个元素,类似于document.getElementById(),但我不想使用通用ID,而是想使用我的自定义"tokenid"属性搜索元素.像这样的东西:

document.getElementByTokenId('14'); 
Run Code Online (Sandbox Code Playgroud)

那可能吗?如果是 - 任何提示都将非常感激.

谢谢.

javascript getelementbyid

35
推荐指数
3
解决办法
6万
查看次数

自定义ListView,日期为SectionHeader(使用自定义SimpleCursorAdapter)

我想显示ListView与Date作为SectionHeader.

我有: 我使用自定义SimpleCursorAdapter从sqlite数据库显示ListView.

我的自定义SimpleCursorAdapter是:

public class DomainAdapter extends SimpleCursorAdapter{
private Cursor dataCursor;

private LayoutInflater mInflater;

public DomainAdapter(Context context, int layout, Cursor dataCursor, String[] from,
        int[] to) {
    super(context, layout, dataCursor, from, to);
        this.dataCursor = dataCursor;
        mInflater = LayoutInflater.from(context);
}


public View getView(int position, View convertView, ViewGroup parent) {

    ViewHolder holder;

    if (convertView == null) {
        convertView = mInflater.inflate(R.layout.todo_row, null);

        holder = new ViewHolder();
        holder.text1 = (TextView) convertView.findViewById(R.id.label);//Task Title
        holder.text2 = (TextView) convertView.findViewById(R.id.label2);//Task Date
        holder.img =   (ImageView) convertView.findViewById(R.id.task_icon);

        convertView.setTag(holder);
    } else …
Run Code Online (Sandbox Code Playgroud)

sqlite android listview android-custom-view

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

Android Studio 3.0 - Logcat窗口无法显示过滤器输入控件

我无法在Android Studio 3.0.1上的logcat输入文本控件中键入文本过滤器,因为它太小了.

我的屏幕很大.我做了一个事件切换到全屏,但这并没有解决问题.

请参见下面的截图.

有没有人见过这个问题?你是如何解决的?

在此输入图像描述

在此输入图像描述

ide debugging android android-studio-3.0

21
推荐指数
3
解决办法
4084
查看次数

适用于Android的最小工作SpotBugs设置

如何为Android设置SpotBugs?

我尝试遵循官方文档gradle插件的文档,但Android的设置不完整且令人困惑,并且无法正常工作.

我尝试了以下设置.

build.gradle(项目):

buildscript {
  repositories {
    // ...
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    // ...
    classpath "gradle.plugin.com.github.spotbugs:spotbugs-gradle-plugin:1.6.4"
  }
}
Run Code Online (Sandbox Code Playgroud)

build.gradle(app):

//...
apply plugin: "com.github.spotbugs"

android {
  // ...
  sourceSets {
    main {
      java.srcDirs = ['src/main/java']
    }
  }
}

// ...

spotbugs {
    toolVersion = "3.1.3"
    ignoreFailures = true
    reportsDir = file("$project.buildDir/findbugsReports")
    effort = "max"
    reportLevel = "high"
}

tasks.withType(com.github.spotbugs.SpotBugsTask) {
  // What do I need to do here?
}
Run Code Online (Sandbox Code Playgroud)

我试过运行它 …

android gradle android-studio spotbugs

17
推荐指数
2
解决办法
1594
查看次数