Android: пользовательский ListAdapter, расширяющий BaseAdapter, падает при запуске приложения - PullRequest
18 голосов
/ 23 марта 2010

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

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

Ответы [ 2 ]

87 голосов
/ 23 марта 2010
v = vi.inflate(R.layout.items_row, p);

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

v = vi.inflate(R.layout.items_row, p, false);
7 голосов
/ 28 декабря 2010

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

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

до

v = vi.inflate(R.layout.items_row, null );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...