Подтвердить что ты не робот

Проблемы с рендерингом: java.lang.NullPointerException в android.support.v7.widget.RecyclerView в Android Studio 1.1.0

Недавно я обновил android sdk для api 22 и android studio 1.1.0. После этого я получаю проблемы с рендерингом RecyclerView. Вот что я получаю

  java.lang.NullPointerException
at android.support.v7.widget.RecyclerView.computeVerticalScrollRange(RecyclerView.java:1216)
at android.view.View.onDrawScrollBars(View.java:12943)
at android.view.View.draw(View.java:15237)
at android.support.v7.widget.RecyclerView.draw(RecyclerView.java:2440)
at android.view.View.draw(View.java:15140)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15138)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15234)
at android.view.View.draw(View.java:15140)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.support.v4.widget.DrawerLayout.drawChild(DrawerLayout.java:1086)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15138)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15138)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15234)
at android.view.View.draw(View.java:15140)
at android.view.ViewGroup.drawChild_Original(ViewGroup.java:3405)
at android.view.ViewGroup_Delegate.drawChild(ViewGroup_Delegate.java:53)
at android.view.ViewGroup.drawChild(ViewGroup.java:3405)
at android.view.ViewGroup.dispatchDraw(ViewGroup.java:3198)
at android.view.View.draw(View.java:15234)

Я получаю это исключение в xml preview/design, поэтому я не могу просмотрите проект xml.

Проект отлично работает без каких-либо исключений. Вот мой виджет

 <android.support.v7.widget.RecyclerView
            android:id="@+id/my_recycler_view"
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="8"
            android:layout_gravity="center"
            android:gravity="center"
            android:scrollbars="vertical"
            android:fadeScrollbars="false"
            />

Это мой код

    recyclerView= (RecyclerView) findViewById(R.id.my_recycler_view);
    layoutManager=new GridLayoutManager(this,2);
    recyclerView.setLayoutManager(layoutManager);
    recyclerView.setHasFixedSize(true);
    recyclerView.setItemAnimator(new DefaultItemAnimator());

Как решить эту проблему?

4b9b3361

Ответ 1

Моя проблема была решена, когда я вынул эту строку из xml файла для RecyclerView:

android:scrollbars="vertical"

Я использую следующие зависимости:

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'com.android.support:appcompat-v7:22.0.0'
    compile 'com.android.support:recyclerview-v7:22.0.0'
    compile 'com.android.support:cardview-v7:22.0.0'
}

EDIT: корень этой проблемы был отмечен комментаторами этого решения. Чтобы решить эту проблему, вы можете просто убедиться, что LayoutManager для RecyclerView установлен перед отображением RecyclerView с набором свойств прокрутки.

Ответ 3

У меня была такая же ошибка. строка 1216 RecyclerView:

return mLayout.canScrollVertically() ? mLayout.computeVerticalScrollRange(mState) : 0;

mLayout, являющееся нулевым в данный момент, является проблемой, я не уверен, почему это null, но, похоже, вам нужно вызвать setLayoutManager() в RecyclerView сразу после setContentView() или inflate(). Мой код запускал фоновый поток, прежде чем попытался получить доступ к RecyclerView и вызвать его setLayoutManager(). После того, как я перешел к следующему, он работает

то есть.

this.setContentView(R.layout.schedule);
rv = (RecyclerView) this.findViewById(R.id.schedule_listview);
rv.setLayoutManager(new LinearLayoutManager(this));

Я все еще не совсем понимаю, зачем это делать, хотя

Ответ 4

Вам не нужно удалять какую-либо строку, но добавьте следующую строку в свой код:

recyclerView.setLayoutManager(new LinearLayoutManager(recyclerView.getContext()));

Таким образом, нет никакой проблемы для прокрутки по вертикали в RecyclerView.

Надеюсь, что это поможет!

Ответ 5

На всякий случай люди все еще интересуются, вы должны обновиться до последней платформы SDK для API 22 через SDK Manager и обновить до последнего вида ресайзера, обновив репозиторий поддержки через SDK Manager и в своем build.gradle файла для использования последней версии (22.0.0)

Ответ 6

я просто удалил свойство android: scrollbars = "vertical", и все будет хорошо