2012-07-03 89 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父組和綠色的加號按鈕應該是「選擇」,使用戶可以輸入信息到字段,然後單擊該按鈕無破壞組織。並且子項中的複選框和紅色x按鈕也應該是「可選擇的」,以便用戶可以檢查複選框並單擊該按鈕。實際工作的唯一部分是CheckBox是可選的,並且該組不會因爲缺少更好的術語而被摺疊,組佈局是「死的」,並且在按下時不執行任何操作。而看起來「工作」的複選框甚至不是這樣,因爲它做了這個奇怪的事情,檢查或取消選中一個會隨機檢查或取消選中其他人。

+0

在代碼中存在的按鈕或複選框的代碼片斷? – 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中的事件需要捕獲和處理,或者它是否在Views中? – jmease

+0

我編輯過的代碼會少一些問題:)。 – SALMAN

+0

是的,您必須通過持久存儲數據來手動處理該數據,或者必須維護textView文本數組。 – SALMAN