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

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" />
4b9b3361

Ответ 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, он просто отлично