Android добавляет нижний колонтитул в ListView addFooterView()?
У меня есть активность ListView, которая нуждается в нижнем колонтитуле для списка элементов, чтобы вы могли щелкнуть по нему, и он будет загружать больше элементов в список. Список поддерживает мой SimpleAdapter, поддерживаемый картой строк, и до того, как установлен адаптер, я делаю это для добавления нижнего колонтитула:
mInflater.inflate(R.layout.list_load_more_row, null);
TextView footer = (TextView) findViewById(R.id.loadMore);
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
Но я получаю это исключение в отладчике
java.lang.NullPointerException
android.widget.ListView.clearRecycledState(ListView.java:489)
android.widget.ListView.resetList(ListView.java:476)
android.widget.ListView.setAdapter(ListView.java:417)
Что не так, и как я могу добавить свой нижний колонтитул в список?
[EDIT]
эта деятельность использует
list_load_more_row.xml:
<TextView xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/loadMore"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:textSize="17sp"
android:textStyle="bold"
android:textColor="#000000"
android:ellipsize="marquee"
android:marqueeRepeatLimit="marquee_forever"
android:gravity="center_horizontal|center_vertical"
android:text="@string/hello" />
Ответы
Ответ 1
Alrighty Iv нашел решение моей проблемы, если я это сделаю, это работает по назначению:
View view = mInflater.inflate(R.layout.list_load_more_row, null);
TextView footer = (TextView) view.findViewById(R.id.loadMore);
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
Я предполагаю, что, поскольку я поместил null в inflater в качестве родительского параметра, представление не было добавлено в текущее представление контента, и поэтому mainActivity не может его найти и теперь, поскольку я явно использую родительское представление, которое возвращается надувным устройством, чтобы найти TextView, в котором он работает.
Ответ 2
как указано в его комментарии выше, loadMore, вероятно, не найден.
вы можете увидеть, если это проблема, изменив код на что-то вроде этого:
TextView footer = (TextView) findViewById(R.id.loadMore);
if ( footer != null ) {
getListView().addFooterView(footer);
setListAdapter(ListViewHelper.getAdapterForContentList(mContent, this));
} else {
throw new NullPointerException("footer is null");
}
не видя больше вашего кода, трудно сказать, какова фактическая причина.
Ответ 3
View footerView = getLayoutInflater().inflate(R.layout.search_footer,
mContentList, false);
LongButton mSearchMoreBtn = (LongButton) footerView
.findViewById(R.id.searchmore_btn);
mSearchMoreBtn.setText(R.string.search_moreapp);//the button to add
mSearchMoreBtn.setBackgroundResource(R.drawable.btn_long_selector);
mSearchMoreBtn.setOnClickListener(mSearchMoreBtnListener);
footerView.setOnClickListener(mLoadMoreAppsListener);
mContentList.addFooterView(footerView);
Я не знаю, что когда я добавляю mSearchMoreBtn
в ListView
как footerView
, это неправильно, вместо этого, когда я добавляю footerView
в ListView
, он просто отлично