0

在 Android 中,我试图在getChildView()函数中操作可扩展列表的一些子行,但下一个代码似乎无法正常工作:

@Override
public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent) {
        View childRow = inflater.inflate(R.layout.buslinescheduleitem, null);
        if(childPosition%4==0) {
            int k = 0;
            TextView textView;
            while((childPosition+k) < getChildrenCount(groupPosition) && k < 4){
                textView= (TextView) childRow.findViewById(textViewIds[k]);
                textView.setText(getChild(groupPosition, childPosition+k));
                k++;
            }
            childRow.setVisibility(View.VISIBLE);
        }
        else { childRow.setVisibility(View.GONE); }
        return childRow;
}

尽管某些子行已使用 Visibility GONE 进行了修改,并且未显示视图,但 groupView 在不应该显示的地方有其“漏洞”(好像此行将具有具有 INVISIBLE 值的 Visibility)。创建可扩展列表时是否可以隐藏一些子行?

4

1 回答 1

0

固定的。我只为每四行创建了一行:

@Override
public View getChildView(int groupPosition, int childPosition,
    boolean isLastChild, View convertView, ViewGroup parent) {
    View childRow = inflater.inflate(R.layout.buslinescheduleitem, null);
        int k = 0;
        TextView textView;
        while(((childPosition*NUMBER_ROWS)+k) < getChildrenSize(groupPosition) && k < NUMBER_ROWS){
            textView= (TextView) childRow.findViewById(textViewIds[k]);
            textView.setText(getChild(groupPosition, (childPosition*NUMBER_ROWS)+k));
            k++;
        }
        while(k < NUMBER_ROWS){
            textView= (TextView) childRow.findViewById(textViewIds[k]);
            textView.setVisibility(View.GONE);
            k++;
        }
        return childRow;    
}

@Override
public int getChildrenCount(int groupPosition) {
    // TODO Auto-generated method stub
    if(!isInverted) return (int) Math.ceil((float)busLine.getBusScheduleRound().get(groupPosition).getHours().size()/(float)NUMBER_ROWS);
    else return (int) Math.ceil((float)busLine.getBusScheduleReturn().get(groupPosition).getHours().size()/(float)NUMBER_ROWS);
}

public int getChildrenSize(int groupPosition){
    if(!isInverted) return busLine.getBusScheduleRound().get(groupPosition).getHours().size();
    else return busLine.getBusScheduleReturn().get(groupPosition).getHours().size();        
}

尽管如此,我还没有实现修改可见性。

于 2012-04-25T23:45:41.517 回答