2012-04-17 3 views
-1

Я использую базу данных, которая реализована в ListView.
Я хочу разделить ListView и добавить заголовки (разделители). Я имею в виду, что у меня много городов, и я хочу сгруппировать их по странам с отдельными лицами.
Вот класс, который я думаю, что-то делать с заголовками:Отображение заголовков в ListView

String[] adobe_products = getResources().getStringArray(R.array.adobe_products); 

     mAdapter = new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products); 
     // Binding Array to ListAdapter 
     this.setListAdapter(new ArrayAdapter<String>(this, R.layout.list_item, R.id.label, adobe_products)); 

     ListView lv = getListView(); 

     // listening to single list item on click 
     lv.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View view, 
       int position, long id) { 

      /* // selected item 
       String product = ((TextView) view).getText().toString(); 

       // Launching new Activity on selecting single List Item 
       Intent i = new Intent(getApplicationContext(), SingleListItem.class); 
       // sending data to new activity 
       i.putExtra("product", product); 
       startActivity(i);*/ 
+1

см. Http://stackoverflow.com/questions/5148376/separators-in-listview – Klaasvaak

ответ

2

сепаратор является в основном только элемент пользовательского списка. Вам нужно переопределить адаптер, чтобы вернуть список заблокированных элементов, где вы хотите, чтобы заголовки были.

Для экземпляра, вы можете добавить разделители в строковых массивов в нужное положение и выполнить следующие настройки для пользовательского адаптера:

  • Override getViewTypeCount() возвращает 2, для сепаратора и элемент списка
  • Переопределить getItemViewType() для возврата 0 для обычных элементов списка и 1 для разделителей
  • Переопределите getView() и правильно создайте правильные строки и привяжите их.
  • Override areAllItemsEnabled() и возвращает false.
  • Override isEnabled(), и если позиция является разделителем, верните значение false.

Тогда один из способов сделать это состоит в том, чтобы иметь отдельный список только элементов заголовка, а затем создать такой метод, чтобы проверить тип элемента для всех методов, упомянутых выше.

public Boolean isSeparator(int position) { 
    if (separatorList.contains(getItem(position)) { 
     return true; 
    } else { 
     return false; 
    } 
} 
Смежные вопросы