带有标题的Android多列listview

时间:2011-08-12 07:58:56

标签: android

我们如何给出muticolumn列表视图的标题(如表标题)

例如我需要这样

RouteCode   RouteName   Outelet
 0001        aaaaa        10
 0002        bbbbb        20

但目前显示如下

      0001        aaaaa        10
      0002        bbbbb        20

我已经完成了使用SimpleAdapter

  ListView list = getListView();
    sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets});
    list.setAdapter(sd);
    list.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
    list.setSelected(true);
    list.setSelection(0);
    list.setTextFilterEnabled(true);
    list.setItemsCanFocus(true);
    list.setItemChecked(positions, true);
    list.setSelectionAfterHeaderView();

我的列表视图也是:

 <ListView android:id="@android:id/list" 
              android:layout_width="wrap_content"
              android:layout_height="wrap_content" 
              android:clickable="true"
              android:dividerHeight="2dp" 
              android:divider="@drawable/divider"
              android:textFilterEnabled="true"
              android:scrollbars="vertical"
              android:layout_gravity="fill_vertical"
              android:drawSelectorOnTop="false"
              android:clipChildren="true" 
              android:fitsSystemWindows="true"
              android:smoothScrollbar="true"
              android:cacheColorHint="#fff"
              android:fastScrollEnabled="false"
                />

另一个问题

如何区分列表中的特定行(区分不同的颜色)?我需要这个默认路由在db中设置。然后该行应显示不同的颜色。 我该如何实现呢?

例如当它加载时我想要显示红色的第2或第3或......行 请帮帮我

提前致谢

2 个答案:

答案 0 :(得分:2)

第一个问题

您想要列表中的几个项目的标题,还是只需要完整列表的标题?

如果您只想要列表标题,可以使用listview.addHeaderView(View v)或其他addHeaderView,请检查两者的链接。

另一种方法是在列表中使用不同的标头时使用自定义适配器。要么自己的适配器,有很多不同的自定义适配器示例。

那里还有不同的图书馆。列表视图中包含不同标题的两个示例是seperatedlistadapter,另一个是CommonsWare MergeAdapter

修改:您的第二个问题 我肯定会使用自己的自定义适配器来执行此操作。这里有一个很好的例子:http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/List14.html 在该示例中,它们具有针对不同行的不同绘图。

        // Bind the data efficiently with the holder.
        holder.text.setText(DATA[position]);
        holder.icon.setImageBitmap((position & 1) == 1 ? mIcon1 : mIcon2);

根据所需的位置,图像交替显示。

答案 1 :(得分:1)

我做了第一个问题:

 View row = null;
 ListView list = getListView();
    sd = new SimpleAdapter(this, routhPath, R.layout.route_path,new String[] {"routeCode","routeName","outlets" },new int[] { R.id.routeCode,R.id.routeName,R.id.outlets});
    row = getLayoutInflater().inflate(R.layout.route_path_row, null, false);
    getListView().addHeaderView(row);

我为列表内容创建了2个xml。另一个是标题。