ListView未在Android 1.5上检查项目

ListView未在Android 1.5上检查项目,android,Android,我正在Eclipse中为Android开发一个应用程序。目前我的目标是API级别3,但我错误地在Android 1.6仿真器(API级别4)上进行测试。在1.6上,它工作得很好,但在1.5上,我的ListView和CHOICE_MODE_SINGLE在单击项目时不会选择项目 以下是我的listview XML: <ListView android:layout_height="wrap_content" android:layout_width="fill_parent

我正在Eclipse中为Android开发一个应用程序。目前我的目标是API级别3,但我错误地在Android 1.6仿真器(API级别4)上进行测试。在1.6上,它工作得很好,但在1.5上,我的ListView和CHOICE_MODE_SINGLE在单击项目时不会选择项目

以下是我的listview XML:

<ListView 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:layout_weight="1" 
    android:id="@+id/ListDomains" 
    android:layout_margin="5px" 
    android:choiceMode="singleChoice" 
    android:clickable="false"
    android:focusable="true"
    android:focusableInTouchMode="true"
    android:descendantFocusability="beforeDescendants"
>
</ListView>

以下是listview中项目的XML:

<?xml version="1.0" encoding="utf-8"?>
<CheckedTextView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_height="wrap_content" 
    android:id="@+id/domain_list_value"
    android:checkMark="?android:attr/listChoiceIndicatorSingle" 
    android:textAppearance="?android:attr/textAppearanceLarge" 
    android:layout_width="fill_parent" 
>
</CheckedTextView>

我创建了一个自定义ArrayList适配器,以便自定义getView。以下是DomainArrayAdapter的代码:

public class DomainArrayAdapter extends ArrayAdapter<char[]> {

    private LayoutInflater mInflater;

    public DomainArrayAdapter(Context context, int textViewResourceId,
            List<char[]> objects) {     
        super(context, textViewResourceId, objects);    
        mInflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        if(convertView == null){
            convertView = mInflater.inflate(R.layout.domain_list, null);
        }

        char[] text = super.getItem(position);

        ((CheckedTextView)convertView).setText(text, 0, text.length);
        return convertView;
    }

}
公共类DomainArrayAdapter扩展了ArrayAdapter{
私人停车场;
公共域ArrayAdapter(上下文,int textViewResourceId,
列出对象){
超级(上下文、textViewResourceId、对象);
mInflater=(LayoutInflater)context.getSystemService(context.LAYOUT\u充气机\u服务);
}
@凌驾
公共视图getView(int位置、视图转换视图、视图组父视图){
if(convertView==null){
convertView=mInflater.inflate(R.layout.domain\u列表,空);
}
char[]text=super.getItem(位置);
((CheckedTextView)convertView).setText(text,0,text.length);
返回视图;
}
}
所有这些代码都可以根据API级别3编译并在Android 1.6仿真器上运行。但是,在1.5模拟器上运行时,单击ListView中的项时不会进行检查


有什么想法吗?

Android 1.5似乎不尊重listview XML中设置的choiceMode。按编程方式设置会使其正常工作:

    ListView listDomains = (ListView) findViewById(R.id.ListDomains);

    Log.d("app", String.valueOf(listDomains.getChoiceMode())); //prints 0

    listDomains.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

    Log.d("app", String.valueOf(listDomains.getChoiceMode())); //prints 1

还有其他人见过这种行为吗?

看来Android 1.5不尊重listview XML中的choiceMode集。按编程方式设置会使其正常工作:

    ListView listDomains = (ListView) findViewById(R.id.ListDomains);

    Log.d("app", String.valueOf(listDomains.getChoiceMode())); //prints 0

    listDomains.setChoiceMode(ListView.CHOICE_MODE_SINGLE);

    Log.d("app", String.valueOf(listDomains.getChoiceMode())); //prints 1
还有人见过这种行为吗