SimpleCursorTreeAdapter - 如何自定义子布局

时间:2010-08-10 19:25:40

标签: android layout

我一直在玩以下Android应用程序示例。

http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/view/ExpandableList2.html

我可以在点击一个孩子时触发一个动作,但我似乎无法弄明白 如何: 1.自定义每个孩子的标签。 2.改变每个孩子的样子。 (例如,我希望每个孩子都显示电话号码,然后右侧显示两个图形按钮。每个按钮都会有一个自定义操作。)

非常感谢任何代码或链接。

3 个答案:

答案 0 :(得分:1)

一种可能的解决方案可能是使用SimpleCursorTreeAdapter.ViewBinder设置setViewBinder,就像使用SimpleCursorAdapter一样。

我完全不确定这是否有效,因为我没有尝试过,但它似乎是相似的。我正在尝试解决同样的问题,所以如果它不起作用,我会尝试在这里发布。

答案 1 :(得分:1)

您可以在SimpleCursorTreeAdapter中覆盖“bindChildView”。这就是我做到的:

      class MyAdapter extends SimpleCursorTreeAdapter {

        @Override
    protected void bindChildView(View view, Context context, Cursor cursor, boolean isLastChild) {
        // TODO Auto-generated method stub
        super.bindChildView(view, context, cursor, isLastChild);

        String title = cursor.getString(cursor.getColumnIndex(Alert.COL_DAY));              
        ((TextView)view.findViewById(R.id.child_day)).setText(title);           
    }

        public MyAdapter(Context context, Cursor cursor,
                int groupLayout, String[] groupFrom, int[] groupTo,
                int childLayout, String[] childFrom, int[] childTo) {

          super(context, cursor, groupLayout, groupFrom, groupTo, childLayout, childFrom, childTo);
        }

        protected Cursor getChildrenCursor(Cursor groupCursor) {
          int idColumn = groupCursor.getColumnIndex(Pill.COL_ID);
          return Alert.list(db, groupCursor.getInt(idColumn), null, Alert.COL_DAY);
        }

  }

但是,你必须在创建时将childFrom和childTo params提供给适配器,因此它将在bindChildView中使用它们。

答案 2 :(得分:0)

您可能需要查看CursorTreeAdapter和bindChildView方法。