2012-01-24 3 views
0

내 응용 프로그램에서 사용자 정의 ExpandableListView을 사용 중입니다. ExpandableListView에는 모든 어린이에게 ToggleButton이 있습니다. ToggleButton의 상태는 다른 그룹을 확장하거나 축소 할 때 변경되지 않습니다.사용자 정의 확장 가능 목록보기의 ToggleButton 상태

내 어댑터 코드는 다음과 같습니다

public class SettingsExpandableListAdapter extends BaseExpandableListAdapter { 
    private Context mContext; 
    private Activity mActivity; 
    private LayoutInflater mInflater; 
    private String[] mGroups = null; 
    private Typeface font; 
    private String mChildren[][] ; 
    private boolean mStates[] []; 
    public SettingsExpandableListAdapter(Activity activity, String[] groups, String children[][],boolean [][] states) 
    { 
     mActivity = activity; 
     mGroups = groups; 
     mChildren= children; 
     mContext = activity; 
     mStates = states; 

    } 





    @Override 
    public Object getChild(int groupPosition, int childPosition) { 
     return mChildren[groupPosition][childPosition]; 
    } 

    @Override 
    public long getChildId(int groupPosition, int childPosition) { 
     // TODO Auto-generated method stub 
     return childPosition; 
    } 

    @Override 
    public View getChildView(final int groupPosition, final int childPosition, boolean isLastChild, View convertView, 
      ViewGroup parent) { 

     final String children= (String) getChild(groupPosition, childPosition); 
     final boolean state = mStates[groupPosition][childPosition]; 
     if (convertView == null) { 

      LayoutInflater infalInflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.expandable_child_row, null); 
     } 
     TextView tv = (TextView) convertView.findViewById(R.id.childName); 
     ToggleButton tb = (ToggleButton)convertView.findViewById(R.id.togbtn); 
     if(state) 
     { 
      tb.setChecked(true);  
     }else 
      tb.setChecked(false); 
     tv.setText(children); 
     tb.setOnCheckedChangeListener(new OnCheckedChangeListener() { 

      @Override 
      public void onCheckedChanged(CompoundButton cb, boolean isChecked) { 
       if(isChecked) 
       { 
        Settings.states[groupPosition][childPosition]=false; 
        mStates[groupPosition][childPosition] = false; 
       }else 
       { 
        Settings.states[groupPosition][childPosition]=true; 
        mStates[groupPosition][childPosition] = true; 
       } 

      } 
     }); 

     return convertView; 


    } 

    @Override 
    public int getChildrenCount(int groupPosition) { 
     // TODO Auto-generated method stub 
     return mChildren[groupPosition].length; 
    } 

    @Override 
    public Object getGroup(int groupPosition) { 

     return mGroups[groupPosition]; 
    } 

    @Override 
    public int getGroupCount() { 
     return mGroups.length; 
    } 

    @Override 
    public long getGroupId(int groupPosition) { 

     return groupPosition; 
    } 

    @Override 
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) { 
     String group = (String) getGroup(groupPosition); 
     if (convertView == null) { 
      LayoutInflater infalInflater = (LayoutInflater) mContext 
      .getSystemService(Context.LAYOUT_INFLATER_SERVICE); 
      convertView = infalInflater.inflate(R.layout.expandable_group_layout, null); 
     } 
     TextView tv = (TextView) convertView.findViewById(R.id.tvGroup); 
     tv.setText(group); 

     return convertView; 

    } 

    @Override 
    public boolean hasStableIds() { 

     return true; 
    } 

    @Override 
    public boolean isChildSelectable(int groupPosition, int childPosition) { 

     return true; 
    } 
} 

답변

0

제거 조건 if (convertView == null) getChildView

에서
관련 문제