ExpandableListView组内的微调器

时间:2014-12-12 11:18:36

标签: android android-layout expandablelistview android-spinner

在我的项目中,我在可扩展列表视图的每个组中实现了一个微调器,并且该组项目仍然是可扩展的

当我使用Cursor适配器填充微调器时,问题就开始了。组项目及其指示器变得不可点击,因此它们不会打开 该组具有自定义布局,其中包含一个复选框,两个视图都已设置为focasable = false

@Override
public View getGroupView(int i, boolean b, View view, ViewGroup viewGroup) {
    Call call = (Call) getGroup(i);
    if (view == null) {
       LayoutInflater layoutInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
       view = layoutInflater.inflate(R.layout.simple_expandable_list_item_call,null);
    }
    TextView textViewCallProductName = (TextView) view.findViewById(R.id.text1);
    Spinner spinnerCallPurpose = (Spinner) view.findViewById(R.id.spinnerCallReason);
    dbHelper mDb = new dbHelper (context);
    mDb.open();
    Cursor c = mDb.getPurposes();
    SimpleCursorAdapter adapter = new SimpleCursorAdapter(context,android.R.layout.simple_spinner_item,c,new String[]{"purpose_name"},new int[]{android.R.id.text1} );
    adapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
    spinnerCallPurpose.setAdapter(adapter);
    if ( call.product == null ){
        textViewCallProductName.setText("Null");
    }
    else{
        textViewCallProductName.setText(call.product.name);}
    return view;
}

这里是组布局simple_expandable_list_item_call.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
          android:layout_width="fill_parent"
          android:layout_height="wrap_content"
          android:orientation="vertical"
          android:paddingLeft="50dp">

<TextView xmlns:android="http://schemas.android.com/apk/res/android"
          android:id="@+id/text1"
          android:layout_width="match_parent"
          android:layout_height="?android:attr/listPreferredItemHeight"
          android:textAppearance="?android:attr/textAppearanceLarge"
          android:gravity="center_vertical"
          android:textAlignment="viewStart"
          android:text="gfg"
    />

<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Samples"
    android:id="@+id/textView26"/>



<TextView
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:textAppearance="?android:attr/textAppearanceMedium"
    android:text="Reason"
    android:id="@+id/textView19"/>

    <Spinner
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/spinnerCallReason"
        android:prompt="@string/select_purpose"
        android:focusable="false"/>

    <CheckBox
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Giveaway"
        android:id="@+id/checkBox2"
        android:focusable="false"
        android:checked="false"/>

    

2 个答案:

答案 0 :(得分:0)

选项包括:

1)子类化Spinner并覆盖任何驱动弹出对话框的内容 2)将Spinner复制到您的项目中并更换弹出对话框中的任何驱动器(如果由于方法可见性等原因,覆盖将无法工作) 3)不要使用Spinner,而是使用Button加上包含ExpandableListView的AlertDialog,或类似的东西

答案 1 :(得分:0)

您可以通过在组项xml的父布局中设置以下属性来执行此操作:

  

机器人:descendantFocusability =&#34; blocksDescendants&#34;