Мне нужен доступ к методам RecyclerView
, созданным с помощью сторонней библиотеки.
То, что я делаю, это чтобы заполучил RecyclerView
View используя findViewById:
ViewGroup mainView = mainActivity.getWindow().getDecorView().findViewById(android.R.id.content);
if(feedView == null){
Object okStreamRecyclerView = mainView.findViewById(NEWSFEED_RECYCLER_ID);
feedView = (okStreamRecyclerView.getClass().getSuperclass()).getSuperclass();
scrollToTop(feedView);
}
На данный момент feedView.getSimpleName
приводит к RecyclerView
. Затем я пытаюсь прокрутить RecyclerView
наверх, используя:
private void scrollToTop(Class feedView) {
log("THE VIEW IS OF TYPE: "+feedView.getName()); // androidx.recyclerview.widget.RecyclerView
try {
Method method = feedView.getMethod("getLayoutManager");
method.setAccessible(true);
LinearLayoutManager layoutManager = (LinearLayoutManager) method.invoke(feedView);
layoutManager.scrollToPositionWithOffset(0, 0);
} catch (NoSuchMethodException e) {
log("NO SUCH METHOD EXCEPTION",e);
} catch (IllegalAccessException e) {
log("ILLEGAL ACCESS EXCEPTION",e);
} catch (InvocationTargetException e) {
log("INVOCATION TARGET EXCEPTION",e);
}
}
но по какой-то причине я получаю ошибку ниже:
IllegalArgumentException: Expected receiver of type androidx.recyclerview.widget.RecyclerView, but got java.lang.Class<androidx.recyclerview.widget.RecyclerView>
Как я могу преобразовать класс в ожидаемый RecyclerView
? Есть ли другой способ получить это представление?