Я развиваю библиотеку cardslib
и реализую пример this.Карточки CardRecyclerView всегда null
Хотя я рабски следую инструкциям в уроке, когда создаю объект CardRecyclerView
, этот объект всегда будет null
.
Проверьте мой код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.native_recyclerview_card_layout);
ArrayList<Card> cards = new ArrayList<Card>();
//Create a Card
Card card = new Card(this);//getContext()
//Create a CardHeader and Add Header to card
CardHeader header = new CardHeader(this);
card.addCardHeader(header);
cards.add(card);
CardArrayRecyclerViewAdapter mCardArrayAdapter = new CardArrayRecyclerViewAdapter(this,cards);
//Staggered grid view
CardRecyclerView mRecyclerView = (CardRecyclerView)
this.findViewById(R.id.carddemo_recyclerview); //**mRecyclerView null here**
mRecyclerView.setHasFixedSize(false); //**NullPointerException here**
mRecyclerView.setLayoutManager(new LinearLayoutManager(this));
//Set the empty view
if (mRecyclerView != null) {
mRecyclerView.setAdapter(mCardArrayAdapter);
}
//Set card in the cardView
CardViewNative cardView = (CardViewNative) this.findViewById(R.id.carddemo);
cardView.setCard(card);
}
cardslib_activity_recycler.xml
:
<it.gmariotti.cardslib.library.recyclerview.view.CardRecyclerView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:card="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
card:list_card_layout_resourceID="@layout/native_recyclerview_card_layout"
android:id="@+id/carddemo_recyclerview"/>
cardslib_item_card_view
:
<?xml version="1.0" encoding="utf-8"?>
<android.support.v7.widget.CardView
xmlns:card_view="http://schemas.android.com/apk/res-auto"
xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/card_view"
android:layout_width="match_parent" android:layout_height="match_parent"
card_view:cardCornerRadius="4dp"
android:layout_margin="5dp">
<RelativeLayout android:id="@+id/nativecardlayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:background="?android:selectableItemBackground">
<!--some more layout-->
</RelativeLayout>
</android.support.v7.widget.CardView>
Я не вижу, почему даже если я ссылающийся на CardRecyclerView
объект правильно xml cardslib_activity_recycler.xml
, я в конце концов считаю, что это ноль. Я что-то пропустил?
Нет, потому что я устанавливаю новый идентификатор ресурса с помощью 'card: list_card_layout_resource_ID =" @ layout/native_recyclerview_card_layout', и поэтому, когда я его устанавливаю, он ссылается на 'cardslib_activity_recycler.xml' –
@CrisBenois. Я действительно не знаю, что этот параметр потому что это пользовательское представление, но 'findViewById' выше только находит идентификатор, зарегистрированный в иерархии представления макета в' setContentView'. Если вы хотите объединить представления, вы должны использовать ''. –
inmyth
Я работаю над этим , но вы правы ... возможно, вам стоит рассмотреть вопрос об изменении вашего ответа. Если это сработает, я соглашусь с ним;) –