2010-03-23 11 views
18

Daten aus einer lokalen DB gezogen, dann mit einem Cursor zugeordnet. Der benutzerdefinierte Adapter zeigt ähnliche Daten wie eine ListView an. Wenn Elemente aus der Datenbank hinzugefügt/gelöscht werden, sollte der Adapter aktualisiert werden. Die unten beschriebene Lösung stürzt die Anwendung beim Start ab. Irgendwelche Vorschläge?Android: Benutzerdefinierte ListAdapter Erweiterung BaseAdapter stürzt beim Start der Anwendung

Vielen Dank im Voraus, -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; 
} 

Ausnahme:

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) 
... 

Antwort

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

hinzufügen false dritten Parameter auf diesen Ruf, und ich denke, Ihr Problem weggeht. Der Aufruf sollte sich:

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

ein Jahr später, dieser Kommentar i noch nützlich! Danke ^^ – davogotland

+1

Oh mein Gott! Akzeptiere das schon! – DeeV

+1

Das ist die Antwort! Ich hatte dieses Problem bereits, aber ich hatte vergessen, dieses Mal den zusätzlichen falschen Parameter einzugeben, da es schon eine Weile her ist, und das hat den Fehler behoben. – rushinge

7

Änderung dieser Code

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

zu

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

Warnung! Falsche Antwort. Bitte beachten Sie http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ – seanpj

Verwandte Themen