2012-04-17 111 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 2012-04-17 14:02:04

回答

2

隔膜基本上是隻是一個自定義列表項。您需要覆蓋適配器以返回您想要標題的禁用列表項。

對於您來說,您可以在正確的位置添加在字符串數組的分隔符,並做如下調整到自定義適配器:

  • 覆蓋getViewTypeCount()返回2,對分離器和列表項目
  • 覆蓋getItemViewType()返回0爲常規列表項目和1爲分隔符
  • 重寫getView()並讓它正確地創建正確的行並綁定它們。
  • 覆蓋areAllItemsEnabled()並返回false。
  • 覆蓋isEnabled(),如果位置是分隔符,則返回false。

然後,一種方法是隻有標題項目的單獨列表,然後創建一個像這樣的方法來檢查上述所有方法的項目類型。

public Boolean isSeparator(int position) { 
    if (separatorList.contains(getItem(position)) { 
     return true; 
    } else { 
     return false; 
    } 
}