0

这就是我的应用程序使用可扩展列表视图从数据库中读取数据然后显示它的样子,范围是 3 个月或 12 周!现在我想要的是只显示每周的内容!我不想显示 WEEK 标签!例如,如果在这 12 周内有任何数据,我们将显示它(但只有日期标签和数据描述),但如果没有,我们什么也不显示!(不显示周!)而且我想禁用每个项目的折叠。

在此处输入图像描述

这是我的适配器

public class MyCareHeaderExpandableListAdapter extends MyCareExpandableListAdapter {

public MyCareHeaderExpandableListAdapter(Context context) {
    super(context);
}
//--------------------------------------------------------------------

@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
    //Log.d("getChildView", "getChildView " + groupPosition);
     //View view = adapter.getView(childPosition, convertView, parent);
    Item item = getChild(groupPosition, childPosition);
    return setContentView(R.layout.expandable_list_item, convertView, item);
}
//--------------------------------------------------------------------
@Override
public long getChildId(int groupPosition, int childPosition) {
    int id = ((ScheduleItem)m_childrens.get(groupPosition).getItem(childPosition)).getID();
    return id;
}
//--------------------------------------------------------------------

/**
 * This function is called to generate the view for the groups.
 */
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
    String name[] = getGroup(groupPosition);

    //  Generating header
    //  A header has no child, and begins the name with "Week"
    //if (getChildrenCount(groupPosition) == 0 && (name[1] == null)) { 
    if (name[1] == null) { 
        convertView = m_inflater.inflate(R.layout.expandable_list_week, null);
        TextView textView = (TextView)convertView.findViewById(R.id.txtHeader);
        Font.setToView(textView, Font.BOLD);
        textView.setText(name[0]);
    }
    //  Generating group name
    else {
        //Log.d("getGroupView", name);
        convertView = m_inflater.inflate(R.layout.expandable_list_group, null); 
        TextView textView = (TextView)convertView.findViewById(R.id.txtDay);
        textView.setText(name[0]);
        Font.setToView(textView, Font.BOLD);

        TextView textView2 = (TextView)convertView.findViewById(R.id.txtDate);
        textView2.setText(name[1]);
        Font.setToView(textView2, Font.BOLD);
    }
    return convertView;
}
4

1 回答 1

1

您正在处理的两个问题:

(1) 几周内不显示没有条目的组视图

为此,我建议修改您的组游标查询,使其不返回带有“空”周条目的游标。

(2) 不允许用户折叠组

出于同样的目的,我实现了OnGroupClickListener拦截组点击,基本上什么都不做。这使我可以控制组何时展开或折叠。这是我的监听器实现:

/**
 * Only purpose here is to intercept taps on the header rows and ignore them
 * (avoid expandable list view adapter from expanding/collapsing).
 */
@Override
public boolean onGroupClick(ExpandableListView parent, View v,
        int groupPosition, long id) {
    return true;
} 

编辑:

要扩展所有组:

    int groupCount = myCursorTreeAdapter.getGroupCount();
    for (int i = 0; i < groupCount; i++) {
        myExpandableListView().expandGroup(i);
    }
于 2012-11-07T16:27:06.863 回答