void android.databinding.ViewDataBinding.executePendingBindings () 'для пустой ссылки на объект - Algolia - PullRequest
1 голос
/ 23 марта 2019

Ошибка:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.databinding.ViewDataBinding.executePendingBindings()' on a null object reference

Я дважды проверил имена используемых ссылок. Кажется, хорошо для меня. Я не знаю, почему я продолжаю получать эту ошибку. Представление вылетает, как только я его открываю.

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_findfriend);

    searcher = Searcher.create(ALGOLIA_APP_ID, ALGOLIA_SEARCH_API_KEY, ALGOLIA_INDEX_NAME);
    helper = new InstantSearch(this, searcher);
    helper.search();



    // Get a reference to your Hits widget
    final Hits hits = (Hits) findViewById(R.id.hits);

// Add an OnItemClickListener
    hits.setOnItemClickListener(new ItemClickSupport.OnItemClickListener() {
        @Override
        public void onItemClick(RecyclerView recyclerView, int position, View v) {
            JSONObject hit = hits.get(position);
            // Do something with the hit
        }
    });

}
@Override
protected void onDestroy() {
    searcher.destroy();
    super.onDestroy();
}
}

Вот моя активность:

activity_findfriend.xml

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:algolia="http://schemas.android.com/apk/res-auto"
android:paddingTop="0dp"
android:background="@color/white">

<LinearLayout
    android:id="@+id/search_emoji"
    android:layout_width="match_parent"
    android:layout_height="60dp"
    android:layout_alignParentStart="true"
    android:layout_alignParentTop="true"
    android:layout_marginStart="0dp"
    android:layout_marginTop="0dp"
    android:background="@drawable/search_drawable"
    android:gravity="top"
    android:paddingTop="8dp"
    android:orientation="horizontal">

    <com.algolia.instantsearch.ui.views.SearchBox
        android:id="@+id/searchBox"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="@drawable/message_rectangle"
        android:layout_marginRight="12dp"
        android:layout_marginLeft="12dp"/>
</LinearLayout>

<LinearLayout
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:layout_below="@+id/search_emoji">

    <com.algolia.instantsearch.ui.views.Hits
        android:id="@+id/hits"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        algolia:itemLayout="@layout/hits_item"
        android:layout_below="@+id/search_emoji"/>
</LinearLayout>

1 Ответ

0 голосов
/ 23 марта 2019

Чтобы использовать привязку данных в макете, оберните его в корневой тег <layout>.

Новые хиты_item.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:algolia="http://schemas.android.com/apk/res-auto">
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="horizontal"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusable="true"
android:id="@+id/hits_items">
<de.hdodenhof.circleimageview.CircleImageView
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/user_image"
    android:layout_width="100dp"
    android:layout_height="100dp"
    app:civ_border_width="4dp"
    android:layout_marginStart="8dp"
    android:layout_marginTop="20dp"
    android:src="@drawable/profile_thumbnail"
    app:civ_border_color="#c42f92"
    algolia:attribute='@{"image"}'/>
<TextView
    android:id="@+id/user_name"
    android:paddingTop="53dp"
    android:paddingLeft="20dp"
    android:textSize="20dp"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    algolia:attribute='@{"username"}'
    algolia:highlighted='@{true}'/>
</LinearLayout>
</layout>
...