Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 为什么选择列表中的一项会选择ListView的所有元素?_Android_Listview - Fatal编程技术网

Android 为什么选择列表中的一项会选择ListView的所有元素?

Android 为什么选择列表中的一项会选择ListView的所有元素?,android,listview,Android,Listview,在Android 2.3上,当您单击列表中的一项时,会选择与列表中的一项颜色相同的整个ListView。我使用自定义选择器 <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_window_focused="false" android:drawable="@color/transparent" /> <it

在Android 2.3上,当您单击列表中的一项时,会选择与列表中的一项颜色相同的整个ListView。我使用自定义选择器

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:state_window_focused="false"
        android:drawable="@color/transparent" />
    <item android:state_focused="true"
        android:state_enabled="false"
        android:state_pressed="true"
        android:drawable="@drawable/color_press" />
    <item android:state_focused="true"
        android:state_enabled="false" 
        android:drawable="@drawable/color_press" />
    <item android:state_focused="true" 
        android:state_pressed="true"
        android:drawable="@drawable/color_press" />
    <item android:state_focused="false" 
        android:state_pressed="true"
        android:drawable="@drawable/color_press" />
    <item android:state_focused="true" 
        android:drawable="@drawable/color_press" />
</selector>

xml中的ListView

<?xml version="1.0" encoding="utf-8"?>
<ListView xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:divider="#B7B7B7"
    android:dividerHeight="1px"
    android:listSelector="@drawable/list_view_selector" />

什么问题

UPD:
我的自定义适配器

public class CityAdapter extends ArrayAdapter<CityInfo>
{

    private boolean isRus = false;
    private LayoutInflater inflater;

    public CityAdapter(final Context context, final List<CityInfo> objects)
    {
        super(context, -1, objects);
        isRus = context.getString(R.string.locale).equalsIgnoreCase("ru");
        inflater = LayoutInflater.from(context);
    }

    private class ViewHolder
    {
        RadioButton radioButton;
        TextView textView;
    }

    @Override
    public View getView(final int position, View convertView, final ViewGroup parent)
    {
        ViewHolder holder;
        if (convertView == null)
        {
            holder = new ViewHolder();
            convertView = inflater.inflate(R.layout.welcome_city_case_list_item, null);
            holder.radioButton = (RadioButton) convertView.findViewById(R.id.radioButton);
            holder.textView = (TextView) convertView.findViewById(R.id.size);
            convertView.setTag(holder);
        }
        else
            holder = (ViewHolder) convertView.getTag();
        final CityInfo cityInfo = getItem(position);

        holder.radioButton.setText(isRus ? cityInfo.getRus() : cityInfo.getEng());
        holder.textView.setHint(cityInfo.getVisibleZipSize());
        return convertView;
    }


}
公共类CityAdapter扩展了ArrayAdapter
{
私有布尔isRus=false;
私人充气机;
公共城市适配器(最终上下文、最终列表对象)
{
super(上下文,-1,对象);
isRus=context.getString(R.string.locale.equalsIgnoreCase(“ru”);
充气器=充气器。从(上下文);
}
私有类视窗持有者
{
单选按钮单选按钮;
文本视图文本视图;
}
@凌驾
公共视图getView(最终整型位置、视图转换视图、最终视图组父视图)
{
视窗座;
if(convertView==null)
{
holder=新的ViewHolder();
convertView=充气机。充气(R.layout.welcome\u city\u case\u list\u项,空);
holder.radioButton=(radioButton)convertView.findViewById(R.id.radioButton);
holder.textView=(textView)convertView.findViewById(R.id.size);
convertView.setTag(支架);
}
其他的
holder=(ViewHolder)convertView.getTag();
最终城市信息城市信息=获取项目(位置);
holder.radioButton.setText(isRus?cityInfo.getRus():cityInfo.getEng());
holder.textView.setHint(cityInfo.getVisibleZipSize());
返回视图;
}
}
欢迎城市\u案例\u列表\u item.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
        xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="horizontal"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:gravity="center"
        android:focusable="false"
        android:clickable="false"
        >
    <RadioButton
            android:id="@+id/radioButton"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:paddingRight="10dp"
            android:textColor="@color/black"
            android:duplicateParentState="true"
            style="@style/CustomRadioButton"
            android:text="Екатеринбург"
            android:layout_weight="1"
            android:paddingTop = "10dp"
            android:paddingBottom = "10dp"
            android:clickable="false"
            android:focusable="false"
            android:background="@color/transparent"
            />
    <TextView
            android:id="@+id/size"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_weight="0"
            android:hint="2,1MB"
            android:paddingLeft="10dp"
            android:paddingRight="10dp"
            android:focusable="false"
            />
</LinearLayout>

main.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:orientation="vertical">

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:divider="#b5b5b5"
        android:dividerHeight="1dp"
        android:listSelector="@drawable/list_selector" />

</LinearLayout>

list_selector.xml

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item
     android:state_selected="false"
        android:state_pressed="false"
        android:drawable="@drawable/gradient_bg" />

    <item android:state_pressed="true"
        android:drawable="@drawable/gradient_bg_hover" />

    <item android:state_selected="true"
     android:state_pressed="false"
        android:drawable="@drawable/gradient_bg_hover" />
</selector>


试试这个

你能发布你的listview适配器的代码吗