设置为android时无法看到单选按钮:choiceMode =“singleChoice”

时间:2013-12-21 18:50:59

标签: android listview radio-button choice

我刚刚看到以下link符合我的需求,我正努力找到同样适合我的listview的东西。希望有人能够对我有所了解

这就是链接:

android:choiceMode="singleChoice"设置 listview 只是为了设置单个单选按钮选择

现在我有类似于上面的列表视图,但有一些图像和文本视图,没什么特别的。

这是我的列表视图:

<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background ="#CCCCCC">

    <ListView
        android:id="@+id/list"
        android:layout_width="fill_parent"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:divider="#3366CC"
        android:dividerHeight="2dp" 
        android:choiceMode="singleChoice"/>
   <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="48dp"
        android:layout_alignParentBottom="true">
        <View
            android:layout_width="match_parent"
            android:layout_height="1dip"
            android:layout_marginLeft="3dip"
            android:layout_marginRight="3dip"
            android:background="?android:attr/dividerVertical"
            android:layout_alignParentTop="true"/>
        <View
            android:id="@+id/divider"
            android:layout_width="1dip"
            android:layout_height="wrap_content"
            android:layout_alignParentTop="true"
            android:layout_alignParentBottom="true"
            android:background="?android:attr/dividerVertical" 
            android:layout_centerHorizontal="true"/>
        <Button
            android:id="@+id/btnPrevious"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_alignParentLeft="true"
            android:layout_alignParentTop="true"
            android:layout_toLeftOf="@id/divider"
            android:background="@drawable/buttons"
            android:text="Previous" 
            android:layout_alignParentBottom="true"
             android:textSize="20sp"  
            android:textColor="#4285f4"/>
        <Button
            android:id="@+id/btnNext"
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:layout_alignParentRight="true"
            android:layout_alignParentTop="true"
            android:background="@drawable/buttons"
            android:text="Next" 
            android:layout_alignParentBottom="true" 
            android:layout_toRightOf="@id/divider"
             android:textSize="20sp"  
            android:textColor="#4285f4"/>
    </RelativeLayout>        
</LinearLayout>

现在我的问题是我无法在它们旁边看到无线电按钮,如上面的链接所示。

这是我的row.xml

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

    <LinearLayout
            android:layout_width="wrap_content"
            android:layout_height="match_parent"
            android:orientation="vertical">
    <ImageView 
        android:id="@+id/photo"
        android:layout_width="150dip"
        android:layout_height="100dip"
        android:paddingRight="15dp"
        android:paddingLeft="15dp"/>
    </LinearLayout>
    <RelativeLayout
        android:layout_width="fill_parent"
            android:layout_height="match_parent"
            android:orientation="vertical"
android:layout_marginLeft="160dp"
android:layout_marginTop="10dp"
android:descendantFocusability="blocksDescendants">
    <TextView android:id="@+id/name"
        android:textSize="14sp" 
        android:textStyle="bold" 
        android:textColor="#000000" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"/>
    <TextView android:id="@+id/itemDescription"
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_below="@id/name"
         android:focusable="false"/>
    <TextView android:id="@+id/price" 
        android:textSize="19sp" 
        android:textStyle="bold" 
        android:textColor="#003399" 
        android:layout_width="wrap_content" 
        android:layout_height="wrap_content"
        android:layout_below="@id/itemDescription"/>
</RelativeLayout>
</RelativeLayout>

2 个答案:

答案 0 :(得分:1)

您链接的示例使用android.R.layout.simple_list_item_single_choice作为行。你不是。单选按钮显示,因为示例正在使用android.R.layout.simple_list_item_single_choice singleChoice ListView。仅singleChoice不会添加单选按钮。

您需要为实现View界面的行创建(或查找)自定义Checkable并在其中包含合适的单选按钮,方法是直接使用RadioButton或通过使用CheckedTextView

例如this blog post shows a CheckedLinearLayout,它利用您提供的CheckedTextView提供Checkable界面来处理singleChoice ListView

答案 1 :(得分:0)

如果要从列表视图中的所有条目中选择单行,则不要使用复选框。仅使用radiobutton。不要使用单一选择列表视图,因为它不支持自定义行,它只支持android默认布局,即android.R.layout.simple_list_item_single_choice。因此,最好在每一行上使用radiobutton创建自定义列表视图。并通过您的代码尝试管理单一选择。我认为这会帮助你更好地工作。如果您需要更多帮助,请告诉我。