2013-10-08 5 views
2

У меня есть этот код:Почему ListView.getCount() больше, чем на 1 Cursor.getCount()

cursor = tbDispositivos.fetchAll(); 
if(cursor.getCount() > 0){ 
    TextView emptyText = (TextView) findViewById(android.R.id.empty); 
    emptyText.setVisibility(View.GONE); 
} 
adapter = new DispositivosCursorAdapter(this, cursor); 

dispositivosList = (ListView) findViewById(android.R.id.list); 
dispositivosList.setAdapter(adapter); 

cursorCount = cursor.getCount(); 
listViewCount = dispositivosList.getCount(); 

listViewCount больше, чем на 1 cursorCount. Зачем?

+0

Вы переопределили метод 'getCount()' для вашего пользовательского адаптера? Если да, покажите это. – Geobits

+5

headerViews и FooterViews также являются частью списка. Итак, у вас есть это в вашем списке? – nandeesh

+0

Методы getCount() заявляют, что он возвращает количество элементов, принадлежащих адаптеру, связанному с этим адаптером. (Это количество элементов данных, которое может быть больше количества видимых видов.). Убедитесь, что вы переопределили пользовательский адаптер ur, чтобы вернуть счетчик курсора. –

ответ

2
cursor.getCount() // number of data items in the cursor 
adapter.getCount() // number of data items passed in by the cursor (or at least that is what a custom adapter should report) 
listview.getCount() // number of data items from the adapter + a header and/or footer view 

Таким образом, используя заголовок или нижний колонтитул сделать listview.getCount() больше, чем на 1 cursor.getCount(). Если вы используете как заголовок, так и нижний колонтитул, тогда он будет больше на 2.

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