2010-03-23 16 views
18

Dane pobierane z lokalnej bazy danych, a następnie mapowane za pomocą kursora. Adapter niestandardowy wyświetla dane podobne do ListView. Gdy elementy są dodawane/usuwane z bazy danych, adapter powinien zostać odświeżony. Poniższe rozwiązanie powoduje awarię aplikacji podczas uruchamiania. Jakieś sugestie?Android: Lista niestandardowaAdapter rozszerzający BaseAdapter ulega awarii podczas uruchamiania aplikacji

Dzięki z góry, -D

@Override 
public View getView(int position, View convertView, ViewGroup parent) { 
    View v = convertView; 
    ViewGroup p = parent;    
    if (v == null) { 
    LayoutInflater vi = (LayoutInflater)context.getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
    v = vi.inflate(R.layout.items_row, p); 
    } 
    int size = mAdapter.getCount(); 
    Log.d(TAG, "position " + position + " Size " + size); 
    if(size != 0){ 
    if(position < size) return mAdapter.getView(position, v, p); 
    Log.d(TAG, "-position " + position + " Size " + size); 
    } 
    return null; 
} 

Wyjątek:

03-23 00:14:10.392: ERROR/AndroidRuntime(718): java.lang.UnsupportedOperationException: addView(View, LayoutParams) is not supported in AdapterView 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.widget.AdapterView.addView(AdapterView.java:461) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:415) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 
03-23 00:14:10.392: ERROR/AndroidRuntime(718):  at com.xyz.abc.CustomSeparatedListAdapter.getView(CustomSeparatedListAdapter.java:90) 
... 

Odpowiedz

87
v = vi.inflate(R.layout.items_row, p); 

Dodaj false trzeci parametr do tej rozmowy i myślę, że problem zniknie. Wezwanie powinno stać:

v = vi.inflate(R.layout.items_row, p, false); 
+6

rok później ten komentarz ja wciąż użytecznego! dzięki ^^ – davogotland

+1

O mój Boże! Zaakceptuj to już! – DeeV

+1

To jest odpowiedź! Miałem już ten problem, ale tym razem zapomniałem wstawić dodatkowy fałszywy parametr, ponieważ minęło trochę czasu i na pewno to naprawiło. – rushinge

7

zmiana tego kodu

v = vi.inflate(R.layout.items_row, p); 

do

v = vi.inflate(R.layout.items_row, null); 
+0

ostrzeżenie! Zła odpowiedź. Zobacz http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ – seanpj

Powiązane problemy