小编Abd*_*ery的帖子

如何在不调用notifiyItemChanged或DiffUtil的情况下更新/刷新RecyclerView的特定项目?

我有一个嵌套RecyclerViews的,这个 recyclerView 的每一行/项目也是一个 recyclerView ,并且有一个外部事件将更新内部 recyclerView 中的项目。我的外部 RecyclerView 适配器的 onBindViewHolder 看起来像这样

    @Override
    public void onBindViewHolder(@NonNull RecyclerView.ViewHolder holder, int position) {
            GiftWrappingHorizontalViewHolder viewHolder = (GiftWrappingHorizontalViewHolder) holder;
            viewHolder.giftWrappingRecyclerView.setLayoutManager(new LinearLayoutManager(viewHolder.giftWrappingRecyclerView.getContext(),
                    RecyclerView.HORIZONTAL, false));
            viewHolder.topTextView.setText(dataList.get(position).getTopTextName());
            if(dataList.get(position).getType() == 1) {
                GiftWrappingHorizontalAdapter adapter = new GiftWrappingHorizontalAdapter(dataList.get(position)
                        .getItems(), position);
                viewHolder.giftWrappingRecyclerView.setAdapter(adapter);
                viewHolder.giftWrappingRecyclerView.setItemAnimator(null);
                adapter.setGiftWrappingHorizontalClickListener(giftWrappingHorizontalClickListener);
            } else if(dataList.get(position).getType() == 0){
                GiftWrappingAddOnsAdapter adapter = new GiftWrappingAddOnsAdapter(dataList.get(position)
                        .getItems(), position);
                viewHolder.giftWrappingRecyclerView.setAdapter(adapter);
                viewHolder.giftWrappingRecyclerView.setItemAnimator(null);
                adapter.setGiftWrappingAddOnEventsListener(giftWrappingAddOnEventsListener);
            }

    }
Run Code Online (Sandbox Code Playgroud)

因此,正如您所看到的,我将内部 recyclerViews 绑定到 onBindViewHolder 内的适配器,并且我想更新内部 recyclerView 的特定项目而不调用 notifiyItemChanged 因为这将重新创建分页的内部适配器,并且它将调用第一个页面只是因为内部 RecyclerViews 使用 HORIZONTAL LinearLayoutManager 。

是否有通过按位置访问 recyclerView 的项目并调用内部 …

java android android-recyclerview

8
推荐指数
1
解决办法
4705
查看次数

VectorDrawables 中的 android:tint 和 android:fillColor 有什么区别?

通常当我们在 android studio 中创建一个新的 Vector Asset Clip Art 时,ide 创建一个像这样的 xml 代码

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:tint="#FFFFFF"
    android:height="24dp"
    android:viewportHeight="24.0"
    android:viewportWidth="24.0"
    android:width="24dp" 
    >
    <path 
      android:fillColor="#FF000000"
      android:pathData="M21,6h-2v9L6,15v2c0,0.55 0.45,1 1,1h11l4,4L22,7c0,-0.55 -0.45,-1 -1,-1zM17,12L17,3c0,-0.55 -0.45,-1 -1,-1L3,2c-0.55,0 -1,0.45 -1,1v14l4,-4h10c0.55,0 1,-0.45 1,-1z"/>
</vector>
Run Code Online (Sandbox Code Playgroud)

我们注意到有两个不同的属性具有颜色值 tintfillColor这些属性之间的差异是什么以及它们如何影响图标?

xml android colors

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

Flutter 在 IOS 上的键盘上方显示 toast

我正在使用 fluttertoast 7.0.4 包在我的应用程序中显示 toast,但在 IOS 上,打开键盘时不会显示 toast“它实际上出现在键盘后面”这是我的代码

  Fluttertoast.showToast(
        msg: message,
        toastLength: Toast.LENGTH_SHORT,
        gravity: ToastGravity.BOTTOM,
        timeInSecForIosWeb: 1,
        backgroundColor: AppColors.strongOrange,
        textColor: Colors.white,
        fontSize: 16.0
);
Run Code Online (Sandbox Code Playgroud)

有什么方法可以改变 z-index 并使其比颤振中键盘的 z-index 更大

android toast ios flutter

6
推荐指数
1
解决办法
2290
查看次数

使用scaleFocus缩放画布会导致跳转

我正在开发一个自定义视图,可以使用缩放手势进行缩放.当我没有使用比例焦点时,一切正常.但是,一旦我这样做canvas.scale(mScaleFactor, mScaleFactor, scaleFocus[0], scaleFocus[1]);,它会导致跳跃,同时缩小到一些低比例因子.这是视图的简化版本,它说明了问题:

public class TestView extends FrameLayout {

private ScaleGestureDetector mScaleGestureDetector;
private float mScaleFactor = 1.f;
private float mMinScaleFactor = 0.4f;
private static final float MAX_SCALE_FACTOR = 2.0f;
private Matrix canvasMatrix = new Matrix();
float[] scaleFocus = new float[2];
private Rect clipBounds = new Rect();

private static final String TAG = "TestView";

public TestView(@NonNull Context context) {
    super(context);
    sharedConstructor();
}

public TestView(@NonNull Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    sharedConstructor();
}

public TestView(@NonNull Context context, …
Run Code Online (Sandbox Code Playgroud)

java android scale android-animation

5
推荐指数
0
解决办法
78
查看次数

如何在 Android 模块之间共享使用 annotationProcessor 的依赖项?

我有一个 Android 应用程序模块 (A) 和一个 Android 库模块 (B)。(A) 和 (B) 都包含这些相同的依赖项:

dependencies {
   implementation 'com.jakewharton:butterknife:8.8.1'
   annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1'
}
Run Code Online (Sandbox Code Playgroud)

但是,在我的项目中,模块 (A) 依赖于模块 (B),因此我确实在堆栈溢出中搜索了有关如何实现Don't Repeat Yourself设计模式的信息,以便我仅将这些依赖项包含在模块 (B) 中,我发现很有用但我没有找到我怎么能做出这种依赖

annotationProcessor 'com.jakewharton:butterknife-compiler:8.8.1
Run Code Online (Sandbox Code Playgroud)

在这两个模块之间共享,那么我该怎么做呢?

android android-gradle-plugin annotation-processor android-module

5
推荐指数
1
解决办法
487
查看次数

Realm 未在反射时为对象的字段设置值(Android)

我正在尝试实现对领域的抽象,以便在对数据库使用 CURD 操作时可以节省一些时间。

我构建的抽象是controller数据库操作,以便我可以使用controller它对任何表执行 CURD 操作。

controller我所说的只是一个 Javaclass有四种方法 create update read delete

这是create使用反射来创建db objects和绑定传递data object给那个的字段db object

 /**
     * this method will delete the old data "you can change that"
     * of the table then store the passed data array in the table
     *
     * @param datum    the data Object you want to
     *                 save in the database
     * @param map      this map will contain …
Run Code Online (Sandbox Code Playgroud)

java reflection android abstraction realm

5
推荐指数
1
解决办法
599
查看次数

无法在com.google.gms.googleservices.GoogleServicesPlugin的空对象上调用方法get()

我在项目中有两个模块

第一个是应用程序模块,第二个是启动模块,但是在构建项目时出现此错误:

无法在空对象上调用方法get()

build.gradle为启动模块如下

apply plugin: 'com.android.library'
apply plugin: 'com.jakewharton.butterknife'

android {
    compileSdkVersion 27

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 27
        versionCode 1
        versionName "1.0"
        multiDexEnabled true
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
        vectorDrawables.useSupportLibrary = true
    }

    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }
    dataBinding {
        enabled = true
    }
    configurations.all {
        resolutionStrategy.force 'com.google.code.findbugs:jsr305:1.3.9'
    }
    android.defaultConfig.vectorDrawables.useSupportLibrary = true
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])

    implementation 'com.android.support:appcompat-v7:27.1.1'
    implementation 'com.android.support.constraint:constraint-layout:1.1.2'
    implementation 'com.android.support:multidex:1.0.3' …
Run Code Online (Sandbox Code Playgroud)

java android module gradle

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

哪个 android studio 版本有 Android 5.1(API 级别 22)?

我已经下载了一些android apk的项目来学习..我尝试使用最新版本的android studio(2.2.3)打开它,但时间太长然后停止,我寻找解决这个问题的方法发现这些应用程序是建立在以前版本的sdk上的所以为了解决这个问题,我应该使用早期版本的Android Studio,所以我想知道什么是Android 5.1(API级别22)的Android Studio版本。

sdk android android-studio

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

EditText不得包含&lt;字符

我的Android应用程序有一个用于电子邮件的EditText字段,用户可以在其中进行输入。

但是我试图限制该EditText的选项,以便用户可以只输入允许的字符作为电子邮件地址。这是我的代码

<EditText
    android:id="@+id/sign_up_password_edit_text"
    style="@style/SignUpEditTextStyle"
    android:hint="@string/password"
    android:inputType="textPassword"
    android:digits="abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ 0123456789 !#$%&amp;'*+-/=?^_`{|}~ (),:;@[\]<>"
   />
Run Code Online (Sandbox Code Playgroud)

但是当尝试编译和运行项目时,出现此错误:

错误:任务':app:mergeDebugResources'的执行失败。

错误:与元素类型“ EditText”相关联的属性“ android:digits”的值不得包含“ <”字符

如何解决该问题并包含'<'字符?

xml validation android

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