Нижний колонтитул добавления Android к ListView addFooterView ()?

У меня есть действие ListView, для которого нужен нижний колонтитул к списку объектов так, чтобы можно было нажать его, и он загрузил бы больше объектов в список. Список поддерживается мой SimpleAdapter, поддержанный картой строк и прежде чем адаптер будет установлен, я делаю этот inorder для добавления нижнего колонтитула:

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)

Что случилось и как я пошел бы о добавлении моего нижнего колонтитула к списку?

[РЕДАКТИРОВАНИЕ] действие использует 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" />
12
задан Kman 12 July 2010 в 14:03
поделиться

2 ответа

Хорошо 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 не может найти его, а теперь, поскольку я явно использую родительское представление, возвращаемое inflater, чтобы найти TextView, это работает.

21
ответ дан 2 December 2019 в 06:44
поделиться

как Огниан заявил в своем комментарии выше, 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");
}

не просматривая больше кода, трудно сказать, в чем истинная причина.

2
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: