小编Ken*_*ele的帖子

如何测试使用Retrofit和Dagger2的REST API

我想创建一个单元测试来验证API是否成功获得了Repos列表.我希望测试实际上建立网络连接而不是使用模拟服务器.而且,例如使用RoboElectric会很好,因此测试可以在JVM上运行.

这是从MVP架构测试模型.

我正在使用来自Mosby的示例项目,它使用Dagger 2和Retrofit 1.9.

public interface GithubApi
{
    @GET("/repositories")
    @Headers("Cache-Control: no-cache")
    public void getRepos(Callback<List<Repo>> callback);
}
Run Code Online (Sandbox Code Playgroud)

这是模块:

@Module()
public class SampleModule
{
    @Provides @Singleton public GithubApi providesGithubApi()
    {
        OkHttpClient client = new OkHttpClient();
        client.setCache(new Cache(context.getCacheDir(), 10 * 1024 * 1024));

        RestAdapter restAdapter = new RestAdapter.Builder()
            .setClient(new OkClient(client))
            .setEndpoint("https://api.github.com")
            .build();

        return restAdapter.create(GithubApi.class);
    }
}
Run Code Online (Sandbox Code Playgroud)

testing android dagger retrofit mosby

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

从集合中的对象的字段获取唯一值并计数值

我有一个ListPin对象(List<Pin>),其中的Pin类具有以下属性:

String pinNumber, String pinType, Date insertDate

我想得到一个HashMap具有<String pinNumber, int count>不同pinNumber的,告诉我在中有多少不同的pinNumber List<Pin>以及每个计数。

所以我知道的方法是:

  • 遍历 List<Pin>
  • 检查是否已HashMap包含pinNumber的键值,并且:
  • 增加它或添加它(如果不存在)。

我想对Pin对象中的每个字段执行相同的操作。

我确定应该有一个更简单的方法来做到这一点?

番石榴也许更简单?

java collections design-patterns guava

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

在 Multi Flavor 应用程序中,如何避免重复资源

如果我有 3 种口味 flavor1、flavor2 和 flavor3,每种口味都有 Dev、Pat 和 Prod“子口味”版本,它们的参数不同,但每种主要口味都有不同的资源。

所以我现在有 9 种不同的风格,但只有 3 个不同的资源文件夹)。我希望相同的“子口味”使用相同的资源。

我怎样才能做到这一点?我在关于 flavorDimensions 的文档中看到过,但不确定如何配置资源文件夹。

目前我正在使用类似的东西

sourceSets {

   flavor1_dev{
            res.srcDir  'src/flavor1/res'
        }

   flavor1_prod{
            res.srcDir  'src/flavor1/res'
        }

   flavor2_dev{
            res.srcDir  'src/flavor2/res'
        }

   flavor2_prod{
            res.srcDir  'src/flavor2/res'
        }

}    
Run Code Online (Sandbox Code Playgroud)

android android-gradle-plugin android-productflavors android-flavordimension

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

使用GSON不解析字段,只保留json原始字符串

在Java中使用GSON是否有任何注释,我可以指示一个字段,即使它是一个对象,它应该将它保持为原始字符串.?

或者最简单的方法是什么?

//This is the original
    @SerializedName("perro")
    public Perro perro

//This is what I want to achieve 
    @SerializedName("perro")
    public String perro

So the result should be 
perro = "{"Users":[{"Name":"firulais","Raza":"beagle"},{"Name":"Spike","Value":"Terrier"}]}"
Run Code Online (Sandbox Code Playgroud)

java android json gson jsonreader

4
推荐指数
2
解决办法
3828
查看次数

使用RxJava更新RecyclerView上的UI(加载和错误视图)

我有一个SearchView执行网络请求来搜索某些曲目,然后用结果填充RecylerView.我发现这个代码工作正常.

我已经通过适配器集成了RecyclerView EmptyView,但现在我正在尝试在此代码中集成LoadingView(Progress)和ErrorView.我试图在ConcatMap中将LoadView(ProgressBar)放在Visibility True上但是得到的错误是"只有创建视图层次结构的原始线程可以触及它的视图."这可以解决在MainThread上运行它但我确定有一个更好的方法来做到这一点.

有人可以更好地了解显示/隐藏ErrorView和LoadingView的逻辑可以在何处以及如何集成到此代码中?

我也在使用RxBinding.也许还使用RxRecyclerView会是一个好主意?

 RxSearchView.queryTextChanges(searchView).
            filter(charSequence ->
                    !TextUtils.isEmpty(charSequence))
            .throttleLast(100, TimeUnit.DAYS.MILLISECONDS)
            .debounce(200, TimeUnit.MILLISECONDS)
            .onBackpressureLatest()
            .concatMap(searchTerm ->
                    {



                        return  searchTracks(searchTerm).
                                .subscribeOn(Schedulers.io())
                                .onErrorResumeNext(throwable1 -> {
                                            //handle error somehow, change UI

                                            return Observable.empty();
                                        }

                                );

                    }
            )
            .observeOn(AndroidSchedulers.mainThread())
            .subscribe(tracks -> {


                populateTracks(tracks);

                    }
                });


            }, throwable -> {

            //show errorView


            });
Run Code Online (Sandbox Code Playgroud)

android rx-java retrofit rx-android android-recyclerview

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