Простая фильтрация по адаптеру дает исключение пустого значения - PullRequest
0 голосов
/ 25 июля 2011

Я пытаюсь создать представление списка, используя простой адаптер.Вот мой код и xml

list_main2.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout  
xmlns:android="http://schemas.android.com/apk/res/android"  
android:layout_width="fill_parent"  
android:layout_height="wrap_content"  
android:orientation="horizontal"  
android:paddingTop="3dip"  
android:paddingBottom="3dip"  
> 
<ImageView
    android:id="@+id/icon"
    android:layout_width="wrap_content"
    android:layout_height="fill_parent"
    android:paddingLeft="2dip"/>

    <LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:orientation="vertical"
    android:paddingLeft="2dip"
    > 

<LinearLayout  
    xmlns:android="http://schemas.android.com/apk/res/android"  
    android:layout_width="fill_parent"  
    android:layout_height="wrap_content"  
    android:orientation="horizontal"
    android:paddingLeft="2dip"
    android:weightSum="3.0"
    > 
    <TextView  
        android:id="@+id/caption1"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginRight="1dip"   
        android:textSize="15sp"
        android:textStyle="bold"
        android:gravity="left"
        android:lines="1"
        /> 
        <TextView  
        android:id="@+id/caption2"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginRight="1dip"   
        android:textSize="15sp"
        android:gravity="left"
        android:lines="1"
        android:paddingLeft="6dip"
        android:layout_weight="2.0"
        /> 
        <TextView  
        android:id="@+id/caption3"  
        android:layout_width="wrap_content"  
        android:layout_height="wrap_content"  
        android:layout_marginRight="1dip"   
        android:textSize="11sp"
        android:gravity="left"
        android:lines="1"
        android:layout_weight="1.0"
        /> 
</LinearLayout>


</LinearLayout>     
</LinearLayout> 

и мой код для просмотра списка

listView = getListView();
        View v1 = getLayoutInflater().inflate(R.layout.tabhost, null);
        listView.addHeaderView(v1);

        adapter = new SimpleAdapter(this, records_of_module, R.layout.list_main2, dispCols, 
                new int[] { R.id.icon,R.id.caption1,R.id.caption2,R.id.caption3,
                R.id.caption4,R.id.caption5,R.id.caption6 });

        setListAdapter(adapter);


        listView.setOnItemClickListener(this);
        listView.setTextFilterEnabled(true);

и фильтрация по

adapter.getFilter().filter(s);
adapter.notifyDataSetChanged();

Я не знаю, как получить исключение.Моя трассировка стека выглядит следующим образом

FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.SimpleAdapter.getCount(SimpleAdapter.java:93)
at android.widget.AdapterView.checkFocus(AdapterView.java:689)
at android.widget.AdapterView$AdapterDataSetObserver.onInvalidated(AdapterView.java:812)
at android.database.DataSetObservable.notifyInvalidated(DataSetObservable.java:43)
at android.widget.BaseAdapter.notifyDataSetInvalidated(BaseAdapter.java:54)
at android.widget.SimpleAdapter$SimpleFilter.publishResults(SimpleAdapter.java:383)

Пожалуйста, помогите мне несколькими советами

заранее спасибо Джо

1 Ответ

0 голосов
/ 25 июля 2011

Это может решить не все, но конструктор для вашего SimpleAdapter ссылается на поля, которых нет в вашем XML-файле.Макет содержит значок, а также заголовок 1, заголовок 2 и заголовок 3, но не заголовок 4, заголовок 5 или заголовок 6.

Согласно документации для SimpleAdapters предоставляемый вами ресурс xml должен содержатькак минимум все элементы, которые вы указали в последнем поле конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...