当我在API中获取401状态代码时,我必须打开登录活动.我不想在每个API的onError方法中放置更改活动逻辑.我想要一个用于所有API的全局方法.为此,我创建了一个拦截器
public class MyInterceptor extends BaseActivity implements Interceptor {
@Override
public Response intercept(Chain chain) throws IOException {
Response response = chain.proceed(chain.request());
if (response.code() == 401) {
throw new RuntimeException(" Here you got 401 from API !");
}
return response;
}
}
Run Code Online (Sandbox Code Playgroud)
在这里我添加了这个拦截器
OkHttpClient.Builder builder=new OkHttpClient.Builder()
.addNetworkInterceptor(new Interceptor() {
@Override
public okhttp3.Response intercept(Chain chain) throws IOException {
Request newRequest = chain.request().newBuilder()
.addHeader("Content-Type", "application/json")
.addHeader("User-Agent", "MyApp-Android-App")
.build();
return chain.proceed(newRequest);
}
})
.addNetworkInterceptor(new StethoInterceptor())
.addNetworkInterceptor(new MyInterceptor())
.addNetworkInterceptor(new HttpLoggingInterceptor().setLevel(HttpLoggingInterceptor.Level.BODY));
Run Code Online (Sandbox Code Playgroud)
现在,我应该在哪里添加更改活动调用方法.我还使用RxRetrofit调用API.我想要一个 …
我在滚动视图中遇到自动滚动问题。
就我而言,有两个 Recyclerview。第一个 Recyclerview,水平滚动,第二个垂直滚动。第一个 RecyclerView 仅用于拖动,第二个 RecyclerView 仅用于放置。两个 recyclerview 都在 ScrollView 内部,因此我在第二个 Recyclerview 中禁用了垂直滚动。我在 Second Recyclerview 的项目上添加了 DragListener。每个项目都有拖动侦听器,因此我在放置项目时添加/替换项目。
所以我的主要问题是滚动,所以当我拖动项目时滚动无法正常工作。目前我使用下面的代码在拖动时滚动。
case DragEvent.ACTION_DRAG_LOCATION:
RecyclerView recyclerView = (RecyclerView) viewSource.getParent();
MyAdapter adapter = (MyAdapter) recyclerView.getAdapter();
int y = Math.round(dragEvent.getY());
Timber.d("onDrag(): " + y);
int translatedY = y - adapter.getScrollDistance();
Timber.d("onDrag(): translated : " + translatedY + " getScrollDistance : " + adapter.getScrollDistance());
int threshold = 50;
// make a scrolling up due the y has passed the threshold
if (translatedY < threshold) {
// …Run Code Online (Sandbox Code Playgroud)