小编Mic*_*ael的帖子

如何延迟从RecyclerView中删除项目

我想用延迟(20s)的animatoin创建聊天列表.在这段时间之后,每个项目都应该消失,同时淡出动画.

如果我RecyclerView不使用滚动就没问题.我重写适配器中的方法,一切正常.

@Override
    public void onViewAttachedToWindow(final ViewHolder holder) {
        if(holder.alpha == null) {

            holder.alpha = ObjectAnimator.ofFloat(holder.itemView, View.ALPHA, 1f, 0f);

            holder.alpha.setDuration(300);
            holder.alpha.setStartDelay(20000);
            holder.alpha.addListener(new Animator.AnimatorListener() {
                @Override
                public void onAnimationStart(Animator animation) {

                }

                @Override
                public void onAnimationEnd(Animator animation) {
                holder.profilePic.setEnabled(false);
                holder.messageContainer.setEnabled(false);
                    if (items.size() > 0) {
                        items.remove(0);
                        notifyItemRemoved(0);
                    }

                }

                @Override
                public void onAnimationCancel(Animator animation) {
                }

                @Override
                public void onAnimationRepeat(Animator animation) {

                }
            });
            holder.alpha.start();
        }
    }

    @Override
    public void onViewDetachedFromWindow(ViewHolder holder) {
        if(holder.alpha != null) {
            holder.alpha.cancel();
            holder.alpha …
Run Code Online (Sandbox Code Playgroud)

animation android recycler-adapter android-recyclerview

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

改造支持SNI

我有问题.改造是否支持使用SNI的SSL?这是一种允许服务器根据请求的主机名返回不同SSL证书的技术,允许在共享主机方案中使用SSL.

android androidhttpclient retrofit retrofit2

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

Sequelize 包含嵌套对象数组 - node.js

我有关系:

(Track) -- M:1 --> (TrackChannel) <--1:M (Channel)
(User) -- M:1 --> (UserChannel) <--1:M (Channel)

  • Channel模型包括对象Track作为current_track_id一对一的关系。
  • Track并且Channel通过多对多相关TrackChannel
  • User并且Channel通过多对多相关UserChannel

/* Channel.js: */

module.exports = function(sequelize, DataTypes) {
  return sequelize.define('channel', {
    id: {
      allowNull: false,
      primaryKey: true,
      type: DataTypes.UUID,
      defaultValue: DataTypes.UUIDV4,
    },
    current_counter: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    },
    track_counter: {
      type: DataTypes.INTEGER,
      allowNull: false,
      defaultValue: 0
    },
    track_id: {
      type: DataTypes.STRING,
      allowNull: true,
      references: {
        model: …
Run Code Online (Sandbox Code Playgroud)

postgresql node.js sequelize.js

5
推荐指数
2
解决办法
8273
查看次数

RxJava 结合布尔运算符

我有两个Observables。observableDisconnectContact负责调用 API 请求删除联系人并正常工作。observableDeleteContact如果联系人从数据库中删除,则第二个发出 true 或 false。我用greeDao.

Observable<Boolean> observableDisconnectContact = apiClient.observableDisconnectContact(contactModel.getId()) 

Observable<Boolean> observableDeleteContact = contactModelRxDao.deleteByKey(contactModel.getDbId())
Run Code Online (Sandbox Code Playgroud)

我想将两者结合起来,但第二个 observable 应该在第一个完成时开始并返回 true。我考虑使用concat()和first()。但我必须知道两个流都发出结果是真的。所以我使用combineLatest()or zip()。但这不是一个好主意,因为两个流都在同一时间运行。我注意到first()运算符不适用于zip()and combineLatest()。

Observables如果第一次返回 false 并且两个流的结果应该是一个结果,我如何将第二个开始的位置与第一个流之后的位置结合起来。

Observable.combineLatest(observableDisconnectContact, observableDeleteContact, new Func2<Boolean, Boolean, Boolean>() {
            @Override
            public Boolean call(Boolean isDisconnectSuccess, Boolean isRemoveSuccess) {
                return isDisconnectSuccess && isRemoveFromDatabaseSuccess;
            }
        }).subscribe(new Subscriber<Boolean>() {
            @Override
            public void onCompleted() {

            }

            @Override
            public void onError(Throwable e) {

            } …
Run Code Online (Sandbox Code Playgroud)

reactive-programming greendao rx-java rx-android

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

更新 Android studio 3.5 获取 proguard 警告

由于我已将 Android Studio 从 3.4 更新到 3.5,因此我在项目中遇到了错误。错误列表如下,似乎 proguard 文件中缺少规则。

但是一旦我提出了这些规则:

-dontnote androidx.**
-dontwarn androidx.**
Run Code Online (Sandbox Code Playgroud)

该项目正在无限构建,不会完成。我等了 30-40 分钟,根本没有结果。(通常项目构建时间为4-5min)

Note: there were 6 duplicate class definitions.
      (http://proguard.sourceforge.net/manual/troubleshooting.html#duplicateclass)
Note: the configuration refers to the unknown class 'com.amazonaws.auth.AWS4Signer'
Warning: androidx.appcompat.widget.ActivityChooserView: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program class androidx.appcompat.widget.ActivityChooserView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'boolean isHorizontallyScrollable()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.AppCompatTextViewAutoSizeHelper: can't find referenced method 'android.text.TextDirectionHeuristic getTextDirectionHeuristic()' in library class android.widget.TextView
Warning: androidx.appcompat.widget.ButtonBarLayout: can't find referenced method 'void saveAttributeDataForStyleable(android.content.Context,int[],android.util.AttributeSet,android.content.res.TypedArray,int,int)' in program …
Run Code Online (Sandbox Code Playgroud)

android proguard gradle android-studio

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

UnsupportedOperationException SDK中不再包含"android"命令

我有项目,Kotlin我已经将Android Studio更新到2.3.3和gradle3.3并将工具构建到25.3.1.在构建期间,我收到此错误:

Caused by: java.lang.UnsupportedOperationException: The "android" command is no longer included in the SDK. Any references to it (e.g. by third-party plugins) should be removed.
        at com.android.SdkConstants.androidCmdName(SdkConstants.java:1947)
        at com.android.SdkConstants$androidCmdName$0.callStatic(Unknown Source)
        at com.jakewharton.sdkmanager.internal.AndroidCommand$Real.<init>(AndroidCommand.groovy:21)
        at com.jakewharton.sdkmanager.internal.PackageResolver.resolve(PackageResolver.groovy:22)
        at com.jakewharton.sdkmanager.internal.PackageResolver$resolve.call(Unknown Source)
        at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2$_closure3.doCall(SdkManagerPlugin.groovy:44)
        at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2$_closure3.doCall(SdkManagerPlugin.groovy)
        at com.jakewharton.sdkmanager.SdkManagerPlugin.time(SdkManagerPlugin.groovy:51)
        at com.jakewharton.sdkmanager.SdkManagerPlugin$_apply_closure2.doCall(SdkManagerPlugin.groovy:43)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:40)
        at org.gradle.listener.ClosureBackedMethodInvocationDispatch.dispatch(ClosureBackedMethodInvocationDispatch.java:25)
        at org.gradle.internal.event.AbstractBroadcastDispatch.dispatch(AbstractBroadcastDispatch.java:44)
        at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:79)
        at org.gradle.internal.event.BroadcastDispatch.dispatch(BroadcastDispatch.java:30)
        at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:93)
        at com.sun.proxy.$Proxy16.afterEvaluate(Unknown Source)
        at org.gradle.configuration.project.LifecycleProjectEvaluator.notifyAfterEvaluate(LifecycleProjectEvaluator.java:82)
        ... 56 more
Run Code Online (Sandbox Code Playgroud)

Gralde文件:

buildscript {
    repositories {
        maven { url 'https://maven.fabric.io/public' } …
Run Code Online (Sandbox Code Playgroud)

android build-tools kotlin android-studio android-gradle-plugin

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

Swift 3,RxAlamofire并映射到自定义对象

我创建了一个简单的项目来检查RxAlamofire和AlamofireObjectMapper之类的库。我有ApiService一个端点很简单,PHP脚本可以正常工作并返回JSON。我想打电话给recipeURL我,我用flatMap运算符来获取响应,并将其提供Mapper给应该获取Recipe对象的位置。我该怎么做?

还是有其他方法?

class ApiService:  ApiDelegate{
    let recipeURL = "http://example.com/test/info.php"

    func getRecipeDetails() -> Observable<Recipe> {
        return request(.get, recipeURL)
            .subscribeOn(MainScheduler.asyncInstance)
            .observeOn(MainScheduler.instance)
            .flatMap({ request -> Observable<Recipe> in
                let json = ""//request.??????????? How to get JSON response?
                guard let recipe: Recipe = Mapper<Recipe>().map(JSONObject: json) else {
                    return Observable.error(ApiError(message: "ObjectMapper can't mapping", code: 422))
                }
            return Observable.just(recipe)
        })
    }
}
Run Code Online (Sandbox Code Playgroud)

swift alamofire rx-swift swift3

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