在ListView中显示标题

时间:2012-04-17 13:32:43

标签: android 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 个答案:

答案 0 :(得分: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;
    }
}