在我的项目中,我在可扩展列表视图的每个组中实现了一个微调器,并且该组项目仍然是可扩展的
当我使用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"/>
答案 0 :(得分:0)
选项包括:
1)子类化Spinner并覆盖任何驱动弹出对话框的内容 2)将Spinner复制到您的项目中并更换弹出对话框中的任何驱动器(如果由于方法可见性等原因,覆盖将无法工作) 3)不要使用Spinner,而是使用Button加上包含ExpandableListView的AlertDialog,或类似的东西
答案 1 :(得分:0)
您可以通过在组项xml的父布局中设置以下属性来执行此操作:
机器人:descendantFocusability =&#34; blocksDescendants&#34;