2012-07-03 2 views
0

transferAvailPowered.axml클릭 가능한 조회수

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:focusable="false" 
android:layout_margin="5dp" 
android:padding="5dp" 
android:gravity="left"> 
<TextView 
    android:id="@+id/availSerial" 
    android:layout_width="0dp" 
    android:layout_weight=".30" 
    android:layout_height="wrap_content" 
    android:layout_marginLeft="45dp" 
    android:layout_marginRight="5dp" 
    android:layout_marginTop="5dp" 
    android:layout_marginBottom="5dp" 
    android:focusable="false" 
    android:padding="5dp" 
    android:gravity="left" /> 
<TextView 
    android:id="@+id/availModel" 
    android:layout_width="0dp" 
    android:layout_weight=".30" 
    android:layout_height="wrap_content" 
    android:layout_margin="5dp" 
    android:focusable="false" 
    android:padding="5dp" 
    android:gravity="left" /> 
<AutoCompleteTextView 
    android:id="@+id/availSite" 
    android:layout_width="120dp" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 
    android:hint="To Site" 
    android:background="@android:color/white" 
    android:textColor="@android:color/black" 
    android:textCursorDrawable="@null" 
    android:focusable="false" 
    android:layout_margin="5dp" 
    android:gravity="left" /> 
<ImageButton 
    android:id="@+id/addToTransfer" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:padding="5dp" 
    android:layout_margin="5dp" 
    android:background="@drawable/addsmall" 
    android:focusable="false" 
    android:gravity="left" /> 

transferAvailAttached.axml

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
android:orientation="horizontal" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:focusable="false" 
android:layout_margin="5dp" 
android:padding="5dp"> 
<TextView 
    android:id="@+id/availSerial" 
    android:layout_width="0dp" 
    android:layout_weight=".30" 
    android:focusable="false" 
    android:layout_height="wrap_content" 
    android:layout_margin="5dp" 
    android:padding="5dp" 
    android:gravity="right" /> 
<TextView 
    android:id="@+id/availModel" 
    android:layout_width="0dp" 
    android:layout_weight=".30" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:layout_margin="5dp" 
    android:padding="5dp" 
    android:gravity="center" /> 
<CheckBox 
    android:id="@+id/include" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:gravity="left|center_vertical" 
    android:focusable="false" 
    android:layout_marginRight="30dp" 
    android:background="@drawable/bg_checkbox" /> 
<ImageButton 
    android:id="@+id/removeAttachment" 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:focusable="false" 
    android:padding="5dp" 
    android:layout_margin="5dp" 
    android:background="@drawable/deletesmall" 
    android:gravity="right" /> 

어댑터

class EquipAdapter : BaseExpandableListAdapter 
{ 
    private List<CPEquipment> Parent { get; set; } 
    private List<List<CPEquipment>> Child { get; set; } 
    private Context _context { get; set; } 
    private IListAdapter _adapter { get; set; } 
    private ExpandableListView _list { get; set; } 

    public EquipAdapter(Context context, List<CPEquipment> parent, List<List<CPEquipment>> child, IListAdapter adapter, ExpandableListView list) 
    { 
     _context = context; 
     Parent = parent; 
     Child = child; 
     _adapter = adapter; 
     _list = list; 
    } 

    public override Java.Lang.Object GetChild(int groupPosition, int childPosition) 
    { 
     List<CPEquipment> level1 = Child.ElementAt(groupPosition); 
     CPEquipment level2 = level1.ElementAt(childPosition); 
     E e = new E() {Serial = level2.Serial, Model = level2.Model}; 
     return e; 
    } 

    public override long GetChildId(int groupPosition, int childPosition) 
    { 
     return Convert.ToInt32(groupPosition.ToString(CultureInfo.InvariantCulture) + childPosition.ToString(CultureInfo.InvariantCulture)); 
    } 

    public override int GetChildrenCount(int groupPosition) 
    { 
     return Child.ElementAt(groupPosition).Count; 
    } 

    public override View GetChildView(int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent) 
    { 
     if (convertView == null) 
     { 
      LayoutInflater inflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService); 
      convertView = inflater.Inflate(Resource.Layout.transferAvailAttached, null); 
     } 

     E e = (E)GetChild(groupPosition, childPosition); 
     TextView serial = (TextView)convertView.FindViewById(Resource.Id.availSerial); 
     serial.Text = e.Serial; 
     TextView model = (TextView)convertView.FindViewById(Resource.Id.availModel); 
     model.Text = e.Model;   

     return convertView; 
    } 

    public override Object GetGroup(int groupPosition) 
    { 
     CPEquipment c = Parent.ElementAt(groupPosition); 
     E e = new E(){Serial = c.Serial, Model = c.Model, Type = c.Status}; 

     return e; 
    } 

    public override long GetGroupId(int groupPosition) 
    { 
     return groupPosition; 
    } 

    public override View GetGroupView(int groupPosition, bool isExpanded, View convertView, ViewGroup parent) 
    { 
     E e = (E)GetGroup(groupPosition); 

     if (convertView == null) 
     { 
      LayoutInflater inflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService); 
       convertView = inflater.Inflate(Resource.Layout.transferAvailPowered, null); 
    } 

     TextView serial = (TextView)convertView.FindViewById(Resource.Id.availSerial); 
     serial.Text = e.Serial; 
     TextView model = (TextView)convertView.FindViewById(Resource.Id.availModel); 
     model.Text = e.Model; 
     AutoCompleteTextView acText = (AutoCompleteTextView)convertView.FindViewById(Resource.Id.availSite); 
     acText.Adapter = _adapter; 

     _list.ExpandGroup(groupPosition); 

     return convertView; 
    } 

    public override bool IsChildSelectable(int groupPosition, int childPosition) 
    { 
     return true; 
    } 

    public override int GroupCount 
    { 
     get { return Parent.Count; } 
    } 

    public override bool HasStableIds 
    { 
     get { return true; } 
    } 

} 

결과 :

이 시나리오에서는 enter image description here

, 상위 그룹에서 AutoCompleteTextView에와 녹색 더하기 버튼 "선택"해야 사용자가 입력 필드에 정보를 수 있고없이 그 버튼을 클릭 있도록 그룹을 무너 뜨렸다. CheckBox를 체크하고 버튼을 클릭 할 수 있도록 CheckBox와 자식의 빨간색 x 버튼도 "선택 가능"해야합니다. 실제로 작동하는 유일한 부분은 CheckBox가 선택 가능하고 더 나은 용어가 없기 때문에 그룹 레이아웃이 "작동하지 않음"이며 눌렀을 때 아무 것도하지 않기 때문에 그룹이 축소되지 않는다는 것입니다. 그리고 겉으로보기에 "작동하는"CheckBox는 체크하지 않거나 선택을 취소하면 다른 사람을 무작위로 체크하거나 체크하지 않는 이상한 일을하기 때문에 그렇다고 할 수 없습니다.

+0

코드에는 Button 또는 checkBox 코드 스 니펫이 있습니까? – SALMAN

+0

예. 포함 된 XML을보십시오. 첫 번째에는 ImageButton이 있고 두 번째에는 CheckBox와 ImageButton이 있습니다. – jmease

답변

1

아래의 코드는 체크 박스 문제를 해결하는 것입니다. "체크 박스는 체크하지 않거나 선택을 해제하면 다른 사람을 선택하거나 선택을 해제하는 이상한 일을하기 때문에 그렇습니다." ImageButton 및 CheckBox 처리 기능과 함께 제공됩니다.

public override View GetChildView(final int groupPosition, int childPosition, bool isLastChild, View convertView, ViewGroup parent) 
{ 
    LayoutInflater inflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService); 
    convertView = inflater.Inflate(Resource.Layout.transferAvailAttached, null); 

    E e = (E)GetChild(groupPosition, childPosition); 
    TextView serial = (TextView)convertView.FindViewById(Resource.Id.availSerial); 
    serial.Text = e.Serial; 
    TextView model = (TextView)convertView.FindViewById(Resource.Id.availModel); 
    model.Text = e.Model;  

    CheckBox include = (CheckBox)convertView.FindViewById(Resource.Id.include); 

    include.setOnCheckedChangeListener(new OnCheckedChangeListener() { 
     public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { 
      // TODO Auto-generated method stub 
      //DO your checkbox handling here 
     } 
    }); 

    ImageButton removeAttachment =(CheckBox)convertView.FindViewById(Resource.Id. removeAttachment); 

    removeAttachment.setOnClickListener(new OnClickListener() { 
     public void onClick(View v) { 
      // TODO Auto-generated method stub 
      //DO your imageButton handling here 
     } 
    }); 

    return convertView; 
} 

public override View GetGroupView(final int groupPosition, bool isExpanded, View convertview, ViewGroup parent) 
{ 
    View convertView = convertview; 
    if (convertView == null) 
    { 
     E e = (E)GetGroup(groupPosition); 

     LayoutInflater inflater = (LayoutInflater)_context.GetSystemService(Context.LayoutInflaterService); 
     convertView = inflater.Inflate(Resource.Layout.transferAvailPowered, null); 
    } 

    TextView serial = (TextView)convertView.FindViewById(Resource.Id.availSerial); 
    serial.Text = e.Serial; 
    TextView model = (TextView)convertView.FindViewById(Resource.Id.availModel); 
    model.Text = e.Model; 
    AutoCompleteTextView acText = (AutoCompleteTextView)convertView.FindViewById(Resource.Id.availSite); 
    acText.Adapter = _adapter; 

    ImageButton addToTransfer =(CheckBox)convertView.FindViewById(Resource.Id. addToTransfer); 

    addToTransfer.setOnClickListener(new OnClickListener() {       
     public void onClick(View v) { 
      // TODO Auto-generated method stub 

      //DO your addToTransfer imageButton handling here 

     } 
    }); 

    _list.ExpandGroup(groupPosition); 

    return convertView; 
} 
+0

좋은 소식과 나쁜 소식. 좋은 소식은 CheckBoxes와 AutoCompleteTextViews가 더 이상 서로 미러링하지 않는 것입니다. 스크롤이 발생하거나 AutoCompleteTextView가 포커스를 잃거나 값이 기본값으로 재설정되는 즉시 나쁜 소식이 있습니다. 어떤 유형의 이벤트가 ExpandableListView에 있습니까? 내가 잡기 및 처리해야하거나 뷰 자체에 있습니까? – jmease

+0

덜 문제가되는 코드를 편집했습니다. :) – SALMAN

+0

예. 데이터를 지속적으로 저장하거나 textView 텍스트의 배열을 유지 관리해야 수동으로 처리해야합니다. – SALMAN