2010-03-23 3 views
18

Данные извлекаются из локальной базы данных, а затем отображаются с помощью курсора. Пользовательский адаптер отображает данные, подобные ListView. Поскольку элементы добавляются/удаляются из БД, адаптер должен обновляться. Решение, предпринятое ниже, приводит к сбою приложения при запуске. Какие-либо предложения?Android: Пользовательский адаптер ListAdapter, расширяющий сбой BaseAdapter при запуске приложения

Спасибо заранее, -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; 
} 

Исключение:

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

ответ

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

Добавить false третий параметр на этот призыв, и я думаю, что ваша проблема исчезнет. Вызов должен стать:

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

год спустя, этот комментарий я все еще полезный! Спасибо ^^ – davogotland

+1

О, Боже мой! Примите это уже! – DeeV

+1

Это ответ! У меня была эта проблема, но я забыл добавить лишний ложный параметр на этот раз, так как это было какое-то время, и, конечно же, это исправило это. – rushinge

7

изменить этот код

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

в

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

предупреждение! Неверный ответ. См. Http://www.doubleencore.com/2013/05/layout-inflation-as-intended/ – seanpj

Смежные вопросы