我想做一个自定义列表视图有两个文本视图和一个单选按钮在一行。并在列表项单击单选按钮的状态应该切换。我不能在这里使用简单适配器。
我已经问过这个问题Single choice ListView custom Row Layout,但没有找到任何令人满意的解决方案。
我现在正在做的是使用simple_list_item_single_choice,把两个TextView的数据放在一个单独的视图中,中间用一些白色隔开。但是这里的情况越来越糟(如下图所示)。
我想要的是固定的大小和价格的位置,并使列表视图作为单一选择。
列表的XML布局可以类似于:
**<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/layout"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:orientation="horizontal" >
<TextView
android:id="@+id/tv_size"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="15sp"
android:width="200dp" />
<TextView
android:id="@+id/tv_price"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="TextView"
android:textSize="15sp"
android:width="70dp" />
<RadioButton
android:id="@+id/radioButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>**
如何使自定义适配器?
5条答案
按热度按时间ruarlubt1#
我也遇到过类似的情况,但很容易就解决了。试试这个:
1.扩展ListActivity并设置自定义列表适配器
1.创建字段以存储适配器中的选定索引位置
1.为其提供接口
1.根据getView()中选定的索引将选中状态设置为true或false
1.将单选按钮的可聚焦和可单击属性设置为“false”
1.将列表视图后代焦点可用性属性设置为“beforeDescendants”
1.覆盖列表项单击
就这样...跑过去看看
bn31dyow2#
我整个上午都在寻找这个问题的答案,到目前为止我找到的最有用的东西是this article。
虽然我还没有实现它所建议的解决方案,但听起来它走上了正确的道路。
基本上,单选
ListView
期望您提供给它的小部件实现Checkable
接口,LinearLayout
和其他小部件不期望,因此您需要创建一个自定义布局,继承LinearLayout
(或任何您想用于项目的布局)并实现必要的接口。djp7away3#
使用Hack处理了类似问题(不是完美的解决方案..但仍然有效..)
cuxqih214#
尝试设置
ListView
的android:choiceMode
属性w46czmvw5#
**
**